在php中访问高级关联数组
我有超过4层的嵌套关联数组。有些值会到达所有4个级别,而有些值会在第一个级别结束。现在我如何从php访问所有值 对于2级阵列,我可以:在php中访问高级关联数组,php,associative-array,Php,Associative Array,我有超过4层的嵌套关联数组。有些值会到达所有4个级别,而有些值会在第一个级别结束。现在我如何从php访问所有值 对于2级阵列,我可以: foreach($options as $o){ foreach($m as $check){ if(isset($check[$o])) echo $check[$o]; } } 检查是否设置了值,然后使用它。 但是,对于深度未知的阵列或具有不均匀级别的大量级别,我如何做到这一点。这取决于“访问”的含义。如果只想打印出值,可以
foreach($options as $o){
foreach($m as $check){
if(isset($check[$o])) echo $check[$o];
}
}
检查是否设置了值,然后使用它。
但是,对于深度未知的阵列或具有不均匀级别的大量级别,我如何做到这一点。这取决于“访问”的含义。如果只想打印出值,可以使用如下递归函数:
function crawlArray($myArray, $depth=0) {
foreach ($myArray as $k => $v) {
if (is_array($v)) {
crawlArray($v, ++$depth);
} else {
echo $v;
}
}
}
crawlArray($options);
您可以使用递归函数,如下所示:
<?php
function getSetValues($array, $searchKeys) {
$values = array();
foreach ($array as $key => $value) {
if (is_array($value)) {
$values = array_merge($values, getSetValues($value, $searchKeys));
} else if (in_array($key, $searchKeys)) {
$values[] = $value;
}
}
return $values;
}
$values = getSetValues(array(
'foo' => array(
'bar' => 123,
'rab' => array(
'oof' => 'abc'
),
'oof' => 'cba'
),
'oof' => 912
), array('bar', 'oof')); //Search for keys called 'bar' or 'oof'
print_r($values);
?>
“递归”是你的关键词。(但也可以有一个包含当前数组的变量的循环。)应该查看函数。
Array
(
[0] => 123 (because the key is 'bar')
[1] => abc (because the key is 'oof')
[2] => cba (because the key is 'oof')
[3] => 912 (because the key is 'oof')
)