2016-04-27 125 views
-1

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

警告:提供的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

结果应该是 - COL1,1,a,b,c,d,2,3,4,COL2,1,2,3,4,COL3,1,2,3,4,COL4,1,2,3 ,4, – FastReply

回答

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 
+0

col2,col3&col4应该在其中每个都具有1,2,3,4,0 – FastReply

+0

okey ,我明白了。 –

+0

@FastReply,现在检查 –

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

是的,我已经测试过.. –

+0

结果应该是 - COL1,1,a,b,c,d,2,3,4,COL2,1,2,3,4,COL3,1,2,3,4 ,COL4,1,2,3,4 - “你的代码不生成这个 – FastReply

0

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

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

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

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

但是内部循环第二次运行时,第二个索引不存在关联数组。这只是一个价值,所以:$item='2'但对于$subitem

+0

,所以应该是什么样的代码 - 结果应该是 - COL1,1,a,b,c,d,2,3,4,COL2, 1,2,3,4,COL3,1,2,3,4,COL4,1,2,3,4 – FastReply