2016-02-03 42 views
0

我有一個大的多維數組(我深入數組),我想以表格的形式顯示它。這是從我的數組一個陣列如何在不知道深度的情況下顯示多維數組?

[Kai Roger Tester] => Array 
     (
      [Ikke navngitt] => Array 
       (
        [status] => Array 
         (
          [documents_green] => 0 
          [documents_yellow] => 0 
          [documents_red] => 3 
          [waiting_approval_documents] => 1 
          [waiting_verfication_documents] => 0 
          [under_construction_documents] => 3 
         ) 

       ) 

      [Finnfjord] => Array 
       (
        [NVD test] => Array 
         (
          [status] => Array 
           (
            [documents_green] => 0 
            [documents_yellow] => 0 
            [documents_red] => 1 
            [waiting_approval_documents] => 0 
            [waiting_verfication_documents] => 0 
            [under_construction_documents] => 5 
           ) 

         ) 

        [status] => Array 
         (
          [documents_green] => 0 
          [documents_yellow] => 0 
          [documents_red] => 0 
          [waiting_approval_documents] => 0 
          [waiting_verfication_documents] => 0 
          [under_construction_documents] => 2 
         ) 

       ) 

      [Endringslogg] => Array 
       (
        [status] => Array 
         (
          [documents_green] => 0 
          [documents_yellow] => 0 
          [documents_red] => 0 
          [waiting_approval_documents] => 0 
          [waiting_verfication_documents] => 0 
          [under_construction_documents] => 1 
         ) 

       ) 

      [Laste opp doc] => Array 
       (
        [status] => Array 
         (
          [documents_green] => 0 
          [documents_yellow] => 0 
          [documents_red] => 1 
          [waiting_approval_documents] => 0 
          [waiting_verfication_documents] => 0 
          [under_construction_documents] => 1 
         ) 

       ) 

      [status] => Array 
       (
        [documents_green] => 1 
        [documents_yellow] => 0 
        [documents_red] => 6 
        [waiting_approval_documents] => 3 
        [waiting_verfication_documents] => 4 
        [under_construction_documents] => 13 
       ) 

     ) 
[Prosess 1] => Array 
    (
     [AF Decom] => Array 
      (
       [status] => Array 
        (
         [documents_green] => 1 
         [documents_yellow] => 0 
         [documents_red] => 0 
         [waiting_approval_documents] => 0 
         [waiting_verfication_documents] => 0 
         [under_construction_documents] => 3 
        ) 

      ) 

     [status] => Array 
      (
       [documents_green] => 7 
       [documents_yellow] => 0 
       [documents_red] => 2 
       [waiting_approval_documents] => 0 
       [waiting_verfication_documents] => 0 
       [under_construction_documents] => 11 
      ) 
    ) 
Folder Name  green yellow red 
Kai Roger Tester 1  0  6 
    Ikke navngitt' 0  0  3 
    Finnfjord  0  0  0 
    NVD test  0  0  1 
Process1   1  1 0 

我厭倦了以下方法

public static function getfoldertable($array, $prefix = '') { 
     $body_start = "<tbody>"; 
     if (count($array) > 0 && is_array($array)) { 
      $i = 0; 
      foreach ($array as $key => $row) { 

       $body_start.='<tr> 
        <td>'.$i.'</td> 
        <td>'.$key.'</td> 
        <td>'.$row['status']['documents_green'].'</td> 
        <td>'.$row['status']['documents_yellow'].'</td> 
        <td>'.$row['status']['documents_red'].'</td> 
       </tr>'; 

       $body_start.= self::getfoldertable($row, $prefix . '-'); 
       $i++; 
      } 
      $body_start.="</tbody>"; 
     } 
     //echo $body_start; die; 
     return $body_start; 


    } 

誰能幫我,我怎麼能顯示呢?

在此先感謝

+0

什麼類型你想要表嗎? –

+0

像問題所示的樹 – codeLover

回答

0

這裏是你可以使用用於生成輸出功能:

function getTreeHTML($tree, $level = 0) { 
    $html = ""; 
    $indent = str_repeat("&nbsp;", $level * 2); 
    foreach ($tree as $key => $value) { 
     if ($key == "status") continue; 
     $html .= " 
<tr><td>$indent$key</td> 
    <td>{$value['status']['documents_green']}</td> 
    <td>{$value['status']['documents_yellow']}</td> 
    <td>{$value['status']['documents_red']}</td> 
</tr>" . getTreeHTML($value, $level+1); 
    } 
    return $html; 
} 

如果輸入的數據是這樣定義的:

$input = array (
    'Kai Roger Tester' => 
    array (
    'Ikke navngitt' => 
    array (
     'status' => 
     array (
     'documents_green' => 0, 
     'documents_yellow' => 0, 
     'documents_red' => 3, 
     'waiting_approval_documents' => 1, 
     'waiting_verfication_documents' => 0, 
     'under_construction_documents' => 3, 
    ), 
    ), 
    'Finnfjord' => 
    array (
     'NVD test' => 
     array (
     'status' => 
     array (
      'documents_green' => 0, 
      'documents_yellow' => 0, 
      'documents_red' => 1, 
      'waiting_approval_documents' => 0, 
      'waiting_verfication_documents' => 0, 
      'under_construction_documents' => 5, 
     ), 
    ), 
     'status' => 
     array (
     'documents_green' => 0, 
     'documents_yellow' => 0, 
     'documents_red' => 0, 
     'waiting_approval_documents' => 0, 
     'waiting_verfication_documents' => 0, 
     'under_construction_documents' => 2, 
    ), 
    ), 
    'Endringslogg' => 
    array (
     'status' => 
     array (
     'documents_green' => 0, 
     'documents_yellow' => 0, 
     'documents_red' => 0, 
     'waiting_approval_documents' => 0, 
     'waiting_verfication_documents' => 0, 
     'under_construction_documents' => 1, 
    ), 
    ), 
    'Laste opp doc' => 
    array (
     'status' => 
     array (
     'documents_green' => 0, 
     'documents_yellow' => 0, 
     'documents_red' => 1, 
     'waiting_approval_documents' => 0, 
     'waiting_verfication_documents' => 0, 
     'under_construction_documents' => 1, 
    ), 
    ), 
    'status' => 
    array (
     'documents_green' => 1, 
     'documents_yellow' => 0, 
     'documents_red' => 6, 
     'waiting_approval_documents' => 3, 
     'waiting_verfication_documents' => 4, 
     'under_construction_documents' => 13, 
    ), 
), 
    'Prosess 1' => 
    array (
    'AF Decom' => 
    array (
     'status' => 
     array (
     'documents_green' => 1, 
     'documents_yellow' => 0, 
     'documents_red' => 0, 
     'waiting_approval_documents' => 0, 
     'waiting_verfication_documents' => 0, 
     'under_construction_documents' => 3, 
    ), 
    ), 
    'status' => 
    array (
     'documents_green' => 7, 
     'documents_yellow' => 0, 
     'documents_red' => 2, 
     'waiting_approval_documents' => 0, 
     'waiting_verfication_documents' => 0, 
     'under_construction_documents' => 11, 
    ), 
), 
); 

。 ..你會這樣稱呼這個功能:

$html = getTreeHTML($input); 

...嵌入該HTML結果爲表如下:

<table border=1> 
    <tr><th>Folder Name</th><th>green</th><th>yellow</th><th>red</th></tr> 
    <?=$html?> 
</table> 

...那麼輸出看起來在瀏覽器中是這樣的:

enter image description here

0

使用RecursiveIterator

工作代碼:

$array = array(); 
$array[0] = array('test' => array('asdf', 'asdf', array('asf', array('asdfads', 'asdf' => array(234,234,234))))); 
$iterator = new RecursiveIteratorIterator(
new RecursiveArrayIterator($array), 
RecursiveIteratorIterator::SELF_FIRST 
); 
foreach ($iterator as $key => $item) { 
if (is_array($item)) { 
    echo '<pre>';print_r($item);echo '</pre>'; 
} 
} 
+0

不適用於我 – codeLover

相關問題