循环遍历数组数组php

Posted

技术标签:

【中文标题】循环遍历数组数组php【英文标题】:loop through array of arrays of arrays php 【发布时间】:2017-08-17 03:40:28 【问题描述】:
$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】:

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

【讨论】:

以上是关于循环遍历数组数组php的主要内容,如果未能解决你的问题,请参考以下文章

PHP数组循环?

PHP 数组遍历方法大全(foreach,list,each)

循环遍历数组数组php

php:循环遍历json数组

PHP学习笔记--数组中常用的多种遍历方式

php循环遍历多个数组[重复]