PHP多维数组未显示预期结果

时间:2016-04-27 08:26:41

标签: php multidimensional-array

无法在多维数组中按预期生成结果。

警告:为foreach()提供的参数无效

$menu = array ('COL1' => array('1' => array('a', 'b', 'c', 'd'), '2', '3', '4'), 'COL2' => array('1', '2', '3', '4'), 'COL3' => array('1', '2', '3', '4'), 'COL4' => array('1', '2', '3', '4') );

foreach ($menu as $col => $value) {
    echo '<hr>'.$col;
    foreach ($value as $item => $subitem) {
        echo '<br>'.$item;
        foreach ($subitem as $childitem) {
            echo '<br>'.$childitem;
        }
    }   
}

欲望输出:

  

结果应为 -

     

COL1,1,a,b,c,d,2,3,4,

     

COL2,1,2,3,4,

     

COL3,1,2,3,4,

     

COL4,1,2,3,4

3 个答案:

答案 0 :(得分:0)

第三级不是所有时间都是数组。可能是你的$菜单数组有不正确的数据。但事实并非如此,你必须在第二级检查$subitem是否为数组。

foreach ($menu as $col => $value) {
    echo '<hr>'.$col;
        foreach ($value as $item => $subitem) {
            echo '<br>'.$item;
            if(is_array($subitem)){
                foreach ($subitem as $childitem) {
                    echo '<br>'.$childitem;
                }
            } else {
                echo '<br>'.$subitem;
            }
        }

}

答案 1 :(得分:0)

警告来自此数组的内部foreach循环:

'COL1' => array('1' => array('a', 'b', 'c', 'd'), '2', '3', '4')

第一次外循环运行 $col = 'COL1'$value=array(...);

内循环第一次执行$item='1'$subitem=array(..)

但内循环第二次运行时,第二个索引不存在关联数组。它只是一个值,因此:$item='2'$subitem没有值

答案 2 :(得分:0)

做这个foreach的块:

foreach ($menu as $col => $value) {
    echo '<hr>'.$col;
    if(is_array($value)){
        foreach ($value as $item => $subitem) {            
            if(is_array($subitem)){
                echo '<br>'.$item;
                foreach ($subitem as $childitem) {
                    echo '<br>'.$childitem;
                }
            }else{
                echo '<br>'.$subitem;
            }
        }
    }   
}

菜单数组

Array
(
    [COL1] => Array
        (
            [1] => Array
                (
                    [0] => a
                    [1] => b
                    [2] => c
                    [3] => d
                )

            [2] => 2
            [3] => 3
            [4] => 4
        )

    [COL2] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
        )

    [COL3] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
        )

    [COL4] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
        )

)

<强>结果

COL1
1
a
b
c
d
2
3
4

COL2
1
2
3
4

COL3
1
2
3
4

COL4
1
2
3
4