循环遍历数组的数组php

时间:2017-08-17 03:40:29

标签: php arrays arrayofarrays

$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);

here the output of my function。 函数循环遍历数组并显示每个级别,但它只显示最后一级“4”的信息,但我希望每个级别内的信息。我知道这是因为(!is_array)条件而发生的。但我不知道如何以另一种方式做到这一点。提前谢谢。

1 个答案:

答案 0 :(得分:0)

你几乎就在那里。获取foreach循环中的键/值对,以便识别顶级数组并输出它。为了按顺序列出其余部分,在输出密钥后直接递归调用该函数。您也不需要显式执行!is_array检查,因为在is_array检查后暗示了这一点。

findstr "mb" file.txt