好的,我说有一个数组,$arr
。我想访问$arr['a']['b']['c']...
。我有另一个数组$keys
,如下所示:['a', 'b', 'c', ...]
。如何使用$keys
作为标识符来访问$arr
的子元素?
换句话说,我基本上想要做一些事情:$arr[$keys[0]][$keys[1]][$keys[2]]
。除此之外,在那个例子中,我只有在$keys
正好有三个元素的情况下才能将其硬编码。这不好,我希望$keys
具有任意长度。
如果我成功地解释了我想要做的事情,有人可以告诉我是否有可能吗? Muchas gracias。
答案 0 :(得分:1)
我想我明白了。数字解决方案将是递归的。这就是我想出来的(目前未经测试,但在我脑海里,我很确定它是正确的):
public function getDeepElement($arr, $keys) {
if (count($keys) == 0) { // base case if $keys is empty
return $arr;
}
if (count($keys) == 1) { // base case if there's one key left
return $arr[$keys[0]];
}
$lastKey = array_pop($keys); // remove last element from $keys
$subarr = $arr[$lastKey]; // go down a level in $arr
return getDeepElement($subarr, $keys);
}