簡體   English   中英

通過數組數組遍歷數組php

[英]loop through array of arrays of arrays php

$myDecodedArray = json_decode($mystring,true);
var_dump($myDecodedArray) ;

我在字符串上使用了json_decode,然后使用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);

這是我函數的輸出 該函數遍歷數組數組並顯示每個級別,但僅顯示最后一個級別“ 4”的信息,但我希望每個級別都包含該信息。 我知道這是由於(!is_array)條件而發生的。 但是我不知道該怎么做。 提前致謝。

你幾乎在那里。 在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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM