2013-12-11 3 views
-1

Мы используем модель, которая всегда возвращает массивы. Он никогда не возвращает объект, null, 0, false или что-то еще. Теперь я обнаружил роковую ошибку. PHP петли через пустой массив. Как это возможно?PHP петли через определенно пустой массив

var_dump($arrProduct); //prints array > empty 
foreach($arrProduct as $Product){ 
    var_dump($Product); //null 
    $name = $Product->getTitle(); //my Exception 

} 

Отливка от массива не помогает. Я не проверяю, содержит ли массив значения, потому что эта модель используется на нескольких 100 строках.

Возможно, это проблема с установкой PHP или проблема с кешем?

+0

просто добавьте 'если (! Пусто ($ arrProduct)' –

+0

вы используете короткие тег в коде? – sulmanpucit

+1

Это не пустое! Http://sandbox.onlinephpfunctions.com/code/b55d917d6dcefe35b35356b6bf9e10c400671e36 Если бы это было не будет выполним 'foreach'. – AbraCadaver

ответ

-1
if ($arrProduct && is_array($arrProduct)) { 
    foreach($arrProduct as $Product){ 
     var_dump($Product); //null 
     $name = $Product->getTitle(); //my Exception 
    } 
} 
+0

Его ясный, что я могу избежать этой ошибки, используя if. Но проблема в том, что я использовал эту модель так часто, что ее невозможно изменить каждый foreach. И почему этот набор тестового набора PHP возвращает массив (0); на нашем сервере с PHP 5.4.x он говорит массив {пуст} – Corni

+0

как вы можете избежать этой фатальной ошибки, если не проверяете содержимое вашего $ arrProduct? – zeflex

+0

Информация о сервере: Сервер: Apache/2.2.22 (Debian) X-Powered-By: PHP/5.4.4-14 + deb7u2 – Corni

0

А вот решение: причина:

была semikolon и конца строки после Еогеаспа

foreach($arrProduct as $Product){            ; 

Никто не заметил :-)

Самой смешным заключается в том, что это полностью действующий код.

Смежные вопросы