php sql код, предупреждение foreach - PullRequest
1 голос
/ 09 февраля 2010

У меня есть следующий код, написанный не мной самим, но мне интересно, не могли бы вы заметить что-то не так с ним?

$query =    "SELECT * from #__properties_type where published = 1 AND parent =        ".$Category_id." OR parent = 0";

$db->setQuery( $query );                

$types = $db->loadObjectList();

$nP = count($types);

$mitems[0]->id=0;

$mitems[0]->name='Type';

    foreach ( $types as $item ) {

        $mitems[] = $item;

    }

Кажется, что он работает нормально, но иногда я вижу случайное предупреждение: неверный аргумент, предоставленный для foreach () в etc / etc / etc /

Есть идеи?

Ответы [ 3 ]

4 голосов
/ 09 февраля 2010

Ваша функция loadObjectList иногда возвращает не массив, возможно, когда SQL-запрос завершается неудачей.

Быстрое исправление:

if (is_array($types))
foreach ( $types as $item ) {

        $mitems[] = $item;

    }

но вы должны искать более глубокую причину сбоя функции и обрабатывать ошибку соответствующим образом, если она есть.

0 голосов
/ 09 февраля 2010

Если $mitems[0] не предопределено перед вашим фрагментом кода, PHP никак не может узнать о $mitems[0], содержащем объект, поэтому $mitems[0]->id выдаст предупреждение.

Чтобы решить эту проблему:

$mitems[0] = new YourObject();
$mitems[0]->id=0;
$mitems[0]->name='Type';
0 голосов
/ 09 февраля 2010

Возможно, это означает, что ваша переменная $types не установлена. Это отключит предупреждение PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...