遍历数组数组 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);
here the output of my function。
该函数循环遍历数组并向我显示每个级别,但它仅显示最后一个级别“4”的信息,但我想要每个级别内的信息。我知道这是由于 (!is_array) 条件而发生的。但我不知道如何以另一种方式做到这一点。提前致谢。
你几乎就在那里。在 foreach 循环中获取 key/value 对,以便您可以识别顶级数组并将其输出。为了把剩下的按顺序列出来,输出key后直接递归调用函数。您也不需要明确执行 !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);
$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) 条件而发生的。但我不知道如何以另一种方式做到这一点。提前致谢。
你几乎就在那里。在 foreach 循环中获取 key/value 对,以便您可以识别顶级数组并将其输出。为了把剩下的按顺序列出来,输出key后直接递归调用函数。您也不需要明确执行 !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);