我在尝试正确解释时遇到了一些麻烦,所以请耐心等待......
我需要能够基于给定的数组递归地选择键。我可以通过一个相当简单的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;
我的问题:是否有PHP函数以递归方式选择数组键?如果没有,有没有比上面的例子更好的方法?
答案 0 :(得分:0)
如果我理解,您正在搜索: http://php.net/recursivearrayiterator 和 http://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);
我希望它有效。