2015-08-09 111 views
-1

我从一个PHP脚本创建以下输出我已经创建:的foreach多维数组

Array 
(
[cage] => OK 
[logicaldrive] => Array 
    (
     [logicaldrive 1] => Array 
      (
       [size] => 2.7 TB 
       [raid] => RAID 1 
       [status] => OK 
      ) 
    ) 

[physicaldrive] => Array 
    (
     [logicaldrive 1] => Array 
      (
       [physicaldrive 2I:1:1] => Array 
        (
         [bay] => port 2I:box 1:bay 1 
         [type] => SATA 
         [size] => 3 TB 
         [status] => OK 
        ) 

       [physicaldrive 2I:1:2] => Array 
        (
         [bay] => port 2I:box 1:bay 2 
         [type] => SATA 
         [size] => 3 TB 
         [status] => OK 
        ) 
      ) 

    ) 

我希望能够将此数据格式化为一个表,我已经尝试,但无法运行在阵列的部分foreach循环,例如,如果我想要一个表有从信息:

[logicaldrive] => Array 
    (
     [logicaldrive 1] => Array 
      (
       [size] => 2.7 TB 
       [raid] => RAID 1 
       [status] => OK 
      ) 

    ) 

我不能没有知道密钥的工作如何获得大小,RAID状态的值(逻辑驱动器1),这取决于代码运行的系统每次都会有所不同。

回答

1

尝试......

$all_data; //your complete array 

foreach($all_data as $key=>$sub_array){ 
    if($key === "logicaldrive"){ 
     foreach($sub_array as $key=>$sub_sub_array){ 
      echo $key;//logicaldrive 1 
      foreach($sub_sub_array as $key=>$fact){ 
       echo '<td>'.$key.'='.$fact.'<td>';//size=2.7 TB,raid=RAID 1, status=OK 
      } 
     } 
    } 
} 

显然,你需要适当地包裹td元素,这只是一个例子,让你与逻辑

+0

完美的作品去,但由于某种原因,确实会在foreach语句中的每个结果之间添加额外的银行​​。 –

+0

我想这是在'physicaldrive'键右边的第二个子阵列? –

+0

在循环的每个级别执行'print_r($ array)',以便您可以看到每个子数组的结构。这样可以更容易地直观地看到发生了什么,并且您应该发现空白发生的位置 –