foreach «Указан неверный аргумент» при предоставлении массива

0

Я получаю Invalid argument supplied for foreach() предупреждения Invalid argument supplied for 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
    Вы собираетесь повторить это, почему бы просто не обернуть / объединить его со строками таблицы, а внедрить / склеить эти вложенные массивы
  • 0
    Я думаю, что foreach должен быть найден, но ваш оператор печати нет, так как вы пытаетесь преобразовать массив в строку
Показать ещё 15 комментариев
Теги:
arrays
foreach

3 ответа

1
Лучший ответ

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

foreach ( (array) $distr_continents[$continent_id] as $distributor_data )
{
    echo('<td>' . $distributor_data . '</td>');
}
  • 0
    да, на самом деле решил, не думал об этом, спасибо
  • 0
    все еще думаю, что это ошибка в функции foreach хотя ...
Показать ещё 2 комментария
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 ()» - вопрос почему?
  • 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 ()» - вопрос почему?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню