我有超过4个级别的嵌套关联数组。有些值会转到所有4个级别,而有些值则以第一级结束。现在我如何从php访问所有值。
对于2级数组,我可以:
foreach($options as $o){
foreach($m as $check){
if(isset($check[$o])) echo $check[$o];
}
}
检查是否设置了值然后使用它。 但是,如何对深度未知或水平不均匀的阵列进行此操作。
答案 0 :(得分:1)
这取决于您对“访问”的含义。如果您只想打印出值,可以使用这样的递归函数:
function crawlArray($myArray, $depth=0) {
foreach ($myArray as $k => $v) {
if (is_array($v)) {
crawlArray($v, ++$depth);
} else {
echo $v;
}
}
}
crawlArray($options);
答案 1 :(得分:0)
您可以使用递归函数:
<?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')
)