遍歷

2017-08-17 101 views
0
$myDecodedArray = json_decode($mystring,true); 
var_dump($myDecodedArray) ; 

我用json_decode陣列PHP的數組的數組,然後使用的var_dump一個字符串來幫助我理解我的陣列結構「myDecodedArray」。我得到了以下遍歷

array(2) { 

     ["red"]=> array(1) 
       { ["10729,10730,10732"]=> array(13) 
         { 
          ["-2.75"]=> array(2) { [0]=> string(5) "+1.75" [1]=> string(5) "+1.50" } 
          ["-2.50"]=> array(3) { [0]=> string(5) "+2.00" [1]=> string(4) "0.00" [2]=> string(5) "-0.50" } 
          ["-2.25"]=> array(3) { [0]=> string(5) "+2.00" [1]=> string(5) "-1.75" [2]=> string(5) "-2.00" } 
          ["-2.00"]=> array(3) { [0]=> string(5) "+2.00" [1]=> string(5) "-2.00" [2]=> string(5) "-2.25" } 
          ["-1.75"]=> array(3) { [0]=> string(5) "+2.00" [1]=> string(4) "0.00" [2]=> string(5) "-2.25" } 
          ["-1.50"]=> array(3) { [0]=> string(5) "+2.00" [1]=> string(4) "0.00" [2]=> string(5) "-2.25" } 
          ["-1.25"]=> array(1) { [0]=> string(5) "-2.25" } 
          ["-1.00"]=> array(2) { [0]=> string(5) "+2.00" [1]=> string(5) "-2.25" } 
          ["-0.75"]=> array(2) { [0]=> string(5) "+2.00" [1]=> string(5) "-2.25" } 
          ["-0.50"]=> array(2) { [0]=> string(5) "+2.00" [1]=> string(5) "-2.25" } 
          ["-0.25"]=> array(1) { [0]=> string(5) "-2.25" } 
          ["0.00"]=> array(3) { [0]=> string(5) "+1.75" [1]=> string(4) "0.00" [2]=> string(5) "-2.25" } 
          ["+0.25"]=> array(2) { [0]=> string(5) "-2.00" [1]=> string(5) "-2.25" } 
         } 
       } 

     ["gray"]=> array(1) 
       { ["10730,10731"]=> array(8) 
         { 
          ["-1.00"]=> array(4) { [0]=> string(5) "+0.25" [1]=> string(4) "0.00" [2]=> string(5) "-0.25" [3]=> string(5) "-0.50" } 
          ["-0.75"]=> array(5) { [0]=> string(5) "+0.75" [1]=> string(5) "+0.50" [2]=> string(5) "+0.25" [3]=> string(5) "-0.50" [4]=> string(5) "-0.75" } 

          ["-0.50"]=> array(2) { [0]=> string(5) "+0.75" [1]=> string(5) "-0.75" } 
          ["-0.25"]=> array(2) { [0]=> string(5) "+0.75" [1]=> string(5) "-0.75" } 
          ["0.00"]=> array(11) { [0]=> string(5) "+3.25" [1]=> string(5) "+3.00" [2]=> string(5) "+2.75" [3]=> string(5) "+2.50" [4]=> string(5) "+2.25" [5]=> string(5) "+1.00" [6]=> string(5) "+0.75" [7]=> string(5) "-0.50" [8]=> string(5) "-0.75" [9]=> string(5) "-1.50" [10]=> string(5) "-1.75" } 

          ["+0.25"]=> array(2) { [0]=> string(5) "+1.00" [1]=> string(5) "-0.50" } 
          ["+0.50"]=> array(2) { [0]=> string(5) "+1.00" [1]=> string(5) "-0.50" } 
          ["+0.75"]=> array(2) { [0]=> string(5) "+1.00" [1]=> string(5) "-0.50" } 
         } 
       } 
    } 

我得到了什麼是數組數組(4個級別)的陣列數組。 我想循環遍歷每個數組,並讀取其中的信息。這裏是我到目前爲止的代碼:

function read_array($arrayOfArrayes, $level = 0) { 
    if (is_array($arrayOfArrayes)) { 
     echo ' * '.$arrayOfArrayes.' (level: '.$level.')<br>'; 
    } 
    elseif (!is_array($arrayOfArrayes)) { 
     echo $arrayOfArrayes.' (level: '.$level.')<br>'; 
    } 
    $level++; 
    foreach ($arrayOfArrayes as $subArray) { 
     read_array($subArray, $level); 
    } 
} 

read_array($myDecodedArray); 

here the output of my function。 函數循環訪問數組數組並向我顯示每個級別,但它僅顯示最後一級「4」的信息,但我想要每個級別內的信息。我知道這是因爲(!is_array)條件發生的。但我不知道如何以另一種方式做到這一點。提前致謝。

回答

0

你幾乎在那裏。獲取foreach循環中的鍵/值對,以便識別頂層數組並輸出它。爲了按順序列出其餘部分,請在輸出密鑰後直接遞歸調用該函數。你也不需要明確地做一個!is_array檢查,因爲它是在is_array檢查後隱含的。

function read_array($arrayOfArrayes, $level = 0) { 
    foreach ($arrayOfArrayes as $key => $val) { 
    if (is_array($val)) { 
     echo ' * '.$key.' (level: '.$level.')<br>'; 
     read_array($val, ++$level); 
    } 
    else { 
     echo $val.' (level: '.$level.')<br>'; 
    } 
    } 
} 

read_array($myDecodedArray);