1. PHP / Говнокод #2594

    +165.3

    1. 1
    2. 2
    3. 3
    $articles = ServiceArticles::getArticlesList($page->pageID, ARTICLE_TYPE_ARTICLE, 0, 1);
    foreach ($articles as $article) $articleID = $article;
    $article = new ServiceArticles($articleID);

    Обнаружено во время рефизии кода. Блок показа одной новости. Возвращается обычный неассоциативный массив. Нахера foreach вместо $articles[0], даже автор толком объяснить не смог.

    Запостил: newmindcore, 11 Февраля 2010

    Комментарии (4) RSS

    • ебать какой оленизм!!!
      Ответить
    • в пхп не силен, но что будет в случае, если вернется массив с 0 элементов?
      foreach ошибку не вернет, а $articles[0] вернет.
      Причем тут разная логика, т.к. в случае с foreach берется последний элемент массива, а $articles[0] вернет первый
      Ответить
      • Если вернётся пустой массив, то $articles[0] вернёт null. Ошибки по коду это не вызовет. А для исключения этой ситуции в принципе можно было бы использовать условие, на наличие содержимого в $articles[0].
        а foreach для пустого массива даже не выполнится, если что.

        вот, чтобы не быть голословным:

        % php -a  
        php > $a = array();
        php > var_dump($a[0]);
        NULL
        php > $b = 1;
        php > foreach ($a as $v) $b = $v;
        php > var_dump($b);
        int(1)
        Ответить
    • Это типа как достать первые пять записей из БД...
      $rows = array();
      
      $list = mysql_query("SELECT * FROM table"); //Выборка дохерищи записей
      
      while($r = mysql_fetch_object($list)
        $rows[] = $r->title; //Из дохерищи столбцов нужен только 'title'
      
      for($i=0;$i<count($rows);$i++) // Обратите внимание: count вызывается каждую итерацию
        if($i<5)
          echo $rows[$i].'<br>';


      И ваш сервак лежит на лопатках.
      Ответить

    Добавить комментарий