2012-11-12 65 views
0

我有一個名爲$ reports的數組。其格式如下。當我試圖在我的視圖文件中使用print_r($ reports)時。如何遍歷這個複雜的關聯數組?

Array 
(
[x] => Array 
    (
     [A] => Array 
      (
       [0] => Channel1 - 1 Stations 
       [1] => n 
       [2] => 1 
       [3] => 2012-11-02 11:30:00 
       [4] => 60 
       [5] => 20 
       [6] => 0 
       [7] => 18 
       [8] => 602 
       [9] => 540 
       [10] => Array 
        (
         [0] => Array 
          (
           [1] => Whirlpool Ice Magic 30.sec Tamil 
           [2] => 0 
           [3] => 20 
           [4] => 0 
           [5] => 18 
           [6] => 602 
           [7] => 540 
          ) 

        ) 

      ) 

     ) 
) 

我剛纔在這裏展示了一個像這樣的x數組,我有很多數組我想循環遍歷它們。可以請任何人給我一個想法如何做到這一點。

+2

您的預期結果 – Baba

+0

i wa nt在表格中打印所有這些文件............ –

+1

如果條目是數組,則使用'foreach'循環和'遞歸'組合。雖然不是最高效的方法,但易於實施。 – arkascha

回答

0
foreach($reports as $key1=>$val1) 
{ 
    foreach($val1 as $key2=>$val2) 
    { 
     foreach($val2 as $key3=>$val3) 
     { 
      echo $val; 
     } 
    } 
} 
0
<?php 

$array = ....; 

foreach($array as $value) 
{ 
    foreach($value as $valueInner) 
    { 
     if(is_array($valueInner)) 
     { 
      foreach($valueInner as $valueInner2) 
      { 
       foreach($valueInner2 as $valueInner3) 
       { 
        echo $valueInner3."\n"; 
       } 
      } 
     } 
     else 
     { 
      echo $valueInner."\n"; 
     } 
    } 
} 

?> 
0

喜歡的東西:

array_walk_recursive($reports, 
    create_function('$e','if (is_scalar($e)) echo sprintf("%s\n",$e);')); 
0

通用例子。

// your data 
$a = array(
    'a', 
    'b', 
    array (
     'c', 
     'd', 
     array ('e','f') 
    ) 
); 

// your recursive function 
function echo_row($x) { 
    if (is_array($x)) { 
     // if is an array calls the recursive function over the new array 
     foreach ($x as $e) { 
      echo_row($e); 
     } 
    } else { 
     // prints a row, change to your table html 
     echo $x . "<br>"; 
    } 
} 

// execute the function 
echo_row($a); 

// results 
a 
b 
c 
d 
e 
f 
0

類似的東西

foreach($reports as $report) { 
    foreach($report as $element) { 
     //$element[3] would give you 2012-11-02 11:30:00 
     if(is_array($element) { 
      foreach($element as $x) { 
       foreach($x as $y) { 
        //$y[1] would give you Whirlpool Ice Magic 30.sec Tamil 
       } 
      } 
     } 
    } 
} 
0

我已經創建了一個PHP函數,將提取嵌套數組到新的基本陣列:

function extractArray($nested_array,&$new_array) 
    { 
     foreach($nested_array as $key => $val) 
     { 
      if(is_array($val)) extractArray($val,$new_array); 
      else $new_array[$key] = $val; 
     } 
    } 
2
$ary = array 
     ("x" => array(
      "A" => array 
       (
       0 => "Channel1 - 1 Stations", 
       1 => "n", 
       2 => 1, 
       3 => "2012-11-02 11:30:00", 
       4 => 60, 
       5 => 20, 
       6 => 0, 
       7 => 18, 
       8 => 602, 
       9 => 540, 
       10 => array 
        (
        0 => array 
         (
         1 => "Whirlpool Ice Magic 30.sec Tamil", 
         2 => 0, 
         3 => 20, 
         4 => 0, 
         5 => 18, 
         6 => 602, 
         7 => 540, 
        ) 
       ) 
      ), 
      )); 

    function fetchArray($ary, $level = 0) 
    { 
     if (is_array($ary)) 
     { 
      $pad = $level * 25; 

      foreach ($ary as $key => $val) 
      { 
       if (is_array($val)) 
       { 
        echo "<div style='padding-left:" . $pad . "px'>" . $key . " = Array</div>"; 

        $level++; 
        fetchArray($val, $level); 
       } 
       else 
       { 
        echo "<div style='padding-left:" . $pad . "px'>" . $key . " => " . $val . "</div>"; 
       } 
      } 
     } 
    } 

    fetchArray($ary, 0); 

試試這個..