在php中访问高级关联数组

在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]; } } 检查是否设置了值,然后使用它。 但是,对于深度未知的阵列或具有不均匀级别的大量级别,我如何做到这一点。这取决于“访问”的含义。如果只想打印出值,可以

我有超过4层的嵌套关联数组。有些值会到达所有4个级别,而有些值会在第一个级别结束。现在我如何从php访问所有值

对于2级阵列,我可以:

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')
)