提供数组时,foreach“提供的参数无效”

时间:2015-03-03 06:15:13

标签: php arrays 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>
    )

 )

我在这里缺少什么?

3 个答案:

答案 0 :(得分:1)

这可能会修复您的警告。

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

答案 1 :(得分:0)

我认为数组是多维的,所以你需要在里面运行一个循环...这只是一个参考

希望你能理解它。

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

答案 2 :(得分:0)

确保$ distr_continents [$ continent_id]始终是一个数组。

只需封装foreach循环,如下所示。

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

   // Your foreach loop here

}

此外,您正在尝试回显数组。这是错误的,并会发出警告。