使用数组递归选择数组键

时间:2014-12-21 19:45:43

标签: php arrays recursion multidimensional-array

我在尝试正确解释时遇到了一些麻烦,所以请耐心等待......

我需要能够基于给定的数组递归地选择键。我可以通过一个相当简单的foreach语句来做到这一点(如下所示)。但是,我更喜欢尽可能通过PHP的内置函数来做事。

$selectors = array('plants', 'fruits', 'apple');
$list = array(
    'plants' => array(
        'fruits' => array(
            'apple' => 'sweet',
            'orange' => 'sweet',
            'pear' => 'tart'
        )
    )
);

$select = $list;
foreach ($selectors as $selector) {
    if (isset($select[$selector])) {
        $select = $select[$selector];
    } else {
        exit("Error: '$selector' not found");
    }
}

echo $select;

See this code in action

我的问题:是否有PHP函数以递归方式选择数组键?如果没有,有没有比上面的例子更好的方法?

1 个答案:

答案 0 :(得分:0)

如果我理解,您正在搜索: http://php.net/recursivearrayiteratorhttp://php.net/recursiveiteratoriterator

并编写类似的代码:

$my_itera = new RecursiveIteratorIterator(new RecursiveArrayIterator($my_array));

$my_keys = array();

foreach ($my_itera as $my_key => $value) {


    for ($i = $my_itera->getDepth() - 1; $i >= 0; $i--) {
        $my_key = $my_itera->getSubIterator($i)->key() . '_' . $my_key;
    }
    $my_keys[] = $my_key;
}
var_export($my_keys);

我希望它有效。