[英]loop through array of arrays of arrays php
$myDecodedArray = json_decode($mystring,true);
var_dump($myDecodedArray) ;
I used json_decode on a string then used var_dump to help me understand the structure of my array "myDecodedArray".I got the following 我在字符串上使用了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" }
}
}
}
what I got is a array of arrays of arrays of arrays (4 levels). 我得到的是一个数组数组(4个级别)。 I want to loop through each array of them and read the information inside it.
我想遍历它们的每个数组并读取其中的信息。 here is my code so far:
到目前为止,这是我的代码:
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 . 这是我函数的输出 。 the function looping through the array of arrays and showing me each level but it shows the information only for the last level "4" but I want the information inside each level.
该函数遍历数组数组并显示每个级别,但仅显示最后一个级别“ 4”的信息,但我希望每个级别都包含该信息。 I know that is happening because of (!is_array) condition.
我知道这是由于(!is_array)条件而发生的。 But I don't know how to do it in another way.
但是我不知道该怎么做。 Thanks in advance.
提前致谢。
You were practically there. 你几乎在那里。 Get the key/value pair in the foreach loop so you can identify the top level array and output it.
在foreach循环中获取键/值对,以便您可以识别并输出顶层数组。 In order to list the rest in order, call the function recursively directly after you output the key.
为了按顺序列出其余部分,请在输出键后直接递归调用该函数。 You also don't need to explicitly do a !is_array check as that is implied after the is_array check.
您也不需要显式地执行!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.