2015-03-03 2 views
0

Я получаю предупреждение Invalid argument supplied for foreach(), что у меня нет объяснений.foreach «Недействительный аргумент предоставлен» при подаче массива

Все работает как ожидалось, однако кажется, что foreach() не любит массив как аргумент, даже если массив содержит другой массив (допустим, для foreach())?

Я следующий код:

foreach ($distr_continents[$continent_id] as $distributor_data) 
{ 
    echo('<td>' . $distributor_data . '</td>'); 
} 

$distr_continents[$continent_id] выглядит следующим образом:

Array 
(
    [2] => Array 
    (
     [0] => <td valign="top"></td> 
     [1] => <td valign="top"></td> 
    ) 

    [1] => Array 
    (
     [0] => <td valign="top"></td> 
     [1] => <td valign="top"></td> 
    ) 

    [4] => Array 
    (
     [0] => <td valign="top"></td> 
     [1] => <td valign="top"></td> 
     [2] => <td valign="top"></td> 
     [3] => <td valign="top"></td> 
     [4] => <td valign="top"></td> 
     [5] => <td valign="top"></td> 
     [6] => <td valign="top"></td> 
     [7] => <td valign="top"></td> 
     [8] => <td valign="top"></td> 
     [9] => <td valign="top"></td> 
     [10] => <td valign="top"></td> 
    ) 

    [3] => Array 
    (
     [0] => <td valign="top"></td> 
     [1] => <td valign="top"></td> 
     [2] => <td valign="top"></td> 
     [3] => <td valign="top"></td> 
     [4] => <td valign="top"></td> 
    ) 

) 

Что я здесь отсутствует ??

+0

вы собираетесь повторить это, почему бы не просто обернуть/сцепить его строки таблицы, и взрывать/склеить эти вложенные массивы – Ghost

+0

Я думаю, что Еогеасп должен быть найти, но ваше заявление для печати не так вы пытаетесь конвертировать массив в строку – Rizier123

+0

@Ghost - нет, 'echo' используется только для целей отладки – Michal

ответ

1

Это может исправить ваше предупреждение.

foreach ((array) $distr_continents[$continent_id] as $distributor_data) 
{ 
    echo('<td>' . $distributor_data . '</td>'); 
} 
+0

да, на самом деле решил это, не думал об этом, thanx – Michal

+0

все еще думает, что это ошибка в функции 'foreach', хотя ... – Michal

+0

Это может быть ошибка, поскольку я прочитал несколько статей об этом, а также предупреждение возникает, когда массив не становится допустимым массивом. Это то, что я читал. –

0

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

надеюсь, вы понимаете это.

foreach ($distr_continents[$continent_id] as $distributor_data) 
{ 
     foreach($distributor_data as $d_data){ 
      echo('<td>' . $d_data . '</td>'); 
     } 
} 
+0

, пожалуйста, прочитайте вопрос - отсутствует точка - $ distr_continents [$ continent_id] дает «Недопустимый аргумент для foreach()» - вопрос - ПОЧЕМУ? – Michal

0

Убедитесь, что $ distr_continents [$ continent_id] - это всегда массив.

Просто инкапсулируйте петлю foreach, как показано ниже.

if(isset($distr_continents[$continent_id]) && is_array($distr_continents[$continent_id])){ 

    // Your foreach loop here 

} 

Также вы пытаетесь эхо-массива. Это неправильно, и вы получите предупреждение.

+0

, пожалуйста, прочитайте вопрос - отсутствует точка - $ distr_continents [$ continent_id] дает «Недопустимый аргумент, предоставленный foreach()» - вопрос - ПОЧЕМУ? – Michal

+0

Это потому, что я не думаю, что это не массив. Я не думаю, что будет какая-то другая проблема. –

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