【发布时间】:2014-12-21 19:45:43
【问题描述】:
我在试图正确解释这一点时遇到了一些麻烦,所以请多多包涵……
我需要能够根据给定的数组递归地选择键。我可以通过一个相当简单的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 函数可以递归地选择数组键?如果没有,有没有比上面的例子更好的方法?
【问题讨论】:
-
The top comment在
array_search()手册中有递归函数示例 -
@scrowler 如果我没看错的话,这个函数似乎在搜索数组值,而我需要一些东西来选择已知的键。
-
嘿@NickJ,很公平 - StackOverflow 上还有其他一些帖子可以帮助您查找密钥。这是一个:stackoverflow.com/a/2948985/2812842
-
@scrowler 虽然这对字符串来说很好,但在实际实现中,这些值都将是单个类的实例(每个都有唯一的属性)。真正的问题是,我试图检索的值可能是 2 级深,也可能是 20 级深。
标签: php arrays recursion multidimensional-array