0

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

对于 2 级数组,我可以:

foreach($options as $o){
    foreach($m as $check){
        if(isset($check[$o])) echo $check[$o];
    }
}

检查是否设置了值,然后使用它。但是,对于深度未知或水平不均匀的水平很多的阵列,我该如何做到这一点。

4

2 回答 2

1

这取决于您对“访问”的含义。如果您只想打印出值,您可以使用这样的递归函数:

function crawlArray($myArray, $depth=0) {
  foreach ($myArray as $k => $v) {
    if (is_array($v)) {
      crawlArray($v, ++$depth);
    } else {
      echo $v;
    }
  }
}

crawlArray($options);
于 2013-10-29T12:17:05.710 回答
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')
)

演示

于 2013-10-29T12:19:13.657 回答