2014-12-21 3 views
-1

Я пытаюсь решить Недопустимый аргумент, предоставленный для предупреждения foreach(). Я на 99% уверен, что это связано с версией PHP, запущенной на нашем сервере, но на данный момент это не может быть изменено, поэтому я ищу вместо этого «исправить» код.PHP 5.4 Недопустимый аргумент для foreach

фрагмент кода:

$array = $this->cal; 
$events = $array['VEVENT']; 
foreach ($array['VEVENT'] as $anEvent) { 

Я получаю Invalid предупреждение об утверждении Еогеасп. Он отлично работает на сервере PHP 5.4, но при перемещении на сервер 5.3 у меня есть проблема. Как я могу «понизить» код? Я бил головой о экран, копаясь во всех разных комментариях, но не могу понять решение. Код был предоставлен суб-контракту разработчика, который сейчас недоступен, так что ...

Цените помощь и образование ...

+1

'$ array ['VEVENT']' массив? можете ли вы отправить массив 'var_dump' $? – waki

+0

Возможный дубликат [Недопустимый аргумент, предоставленный foreach()] (http://stackoverflow.com/questions/2630013/invalid-argument-supplied-for-foreach) – hakre

ответ

1

фрагмент кода, при условии, удастся ли это PHP 5.3 или 5.4, потому что $ массив [ «VEVENT»] не появляется, чтобы быть массивом. Вы можете посмотреть код, который генерирует свойство cal вашего объекта. В то же время вы можете разрешить ошибку, проверив, является ли массив $ array ['VEVENT'] массивом или нет.

$array = $this->cal; 
$events = $array['VEVENT']; 
if(isset($array['VEVENT"] && is_array($array['VEVENT'])) { 
    foreach ($array['VEVENT'] as $anEvent) { 
    // do stuff with $anEvent 
    } 
} 
+0

Ваш ответ наиболее точный, что вызывало проблему. Оказывается, что в файле, который он читал, использовались некоторые недопустимые символы, что создавало проблему с массивом. Фактический код, однако, был совместим с 5.3, поэтому я узнал. – Kaleb

-2

Это, вероятно, происходит потому, что массив пуст.

$array = $this->cal; 
$events = $array['VEVENT']; 
if ((is_array ($array['VEVENT'])) && (!empty ($array['VEVENT']))) { 
    foreach ($array['VEVENT'] as $anEvent) { 
    } 
} else { 
    echo 'empty or not an array'; 
} 
+0

Просто потому, что переменная не пуста, это не делает ее массив. Вышеприведенный код по-прежнему терпит неудачу для чего-то вроде '$ array ['VEVENT'] = 5' – Robbert

+0

Вы правы, я сделал предположение, что OP знает, что выход представляет собой массив. Думаю, я должен проверить мета, чтобы посмотреть, насколько далеко могут пройти эти предположения. – Duniyadnd

+0

Простое исправление, изменение '! Empty ($ array ['VEVENT'])' to 'is_array ($ array ['VEVENT'])' – Robbert

-1

fputcsv ($ handle, array ('', '', 'Ticket_Detail'));

fputcsv ($ handle, array (''));

foreach ($ results as $ row) { fputcsv ($ handle, array ('Ticket No:'. $ Row ['Ticketno']));

$ticketno1=$row['Ticketno']; 

fputcsv($handle, array('')); 
Смежные вопросы