我有一个多维嵌套数组。下面的示例是数组的嵌套方式。但是,嵌套的级别数量可能会有所不同。我需要动态地循环通过它们。我想不使用json_encode来执行此操作。有什么想法可以实现吗?
$array = array(
'brands' => array(
'codes' => array('b' => "Apple", 'c' => 21, 'd' => 18),
'items' => array('b' => "Google", 'c' => 22, 'd' => 19),
'stock' => array('b' => "Samsung", 'c' => 23, 'd' => 20)
)
);
*更新*
我希望输出看起来像json布局,但不使用json_encode。应该最终看起来像下面的示例。但是巢的级别可能会有所不同:
"brands":{
"codes":{
"b":"Apple",
"c":"21",
"d":"18"
},
"items":{
"b":"Google",
"c":"22",
"d":"19"
},
"stock":{
"b":"Samsung",
"c":"23",
"d":"20"
},
}
答案 0 :(得分:0)
您可以使用递归函数调用来实现。例如
function walk_array($array) {
foreach($array as $idx => $val) {
if(is_array($val)) {
walk_array($val);
} else {
/* found a value, do something with it */
echo $idx . " = " . $val . "<br>";
}
}
}
walk_array($array);
这个想法是在函数walk_array
中迭代数组,并检查当前数组元素是否又是数组。如果是这种情况,请通过对找到的数组调用walk_array
来开始迭代数组。借助这种技术,可以嵌套数组的深度没有限制。
答案 1 :(得分:0)
我认为您需要的是递归
查看我如何通过打印每个项目的键和值来解决您的问题
$array = array(
'brands' => array(
'codes' => array('b' => "Apple", 'c' => 21, 'd' => 18),
'items' => array('b' => "Google", 'c' => 22, 'd' => 19),
'stock' => array('b' => "Samsung", 'c' => 23, 'd' => 20)
)
);
printArray($array);
function printArray($array){
$keys = array_keys($array);
foreach($keys as $key){
$value = $array[$key];
if(is_array($value)){
printArray($value);
}else{
echo $key . " " . $value . "<br/>";
}
}
}