好吧,假设我有一个数组$arr
。我想访问$arr['a']['b']['c']...
。我有另一个数组,$keys
,看起来像这样:['a', 'b', 'c', ...]
。如何使用$keys
作为标识符来访问$arr
的子元素?
换句话说,我基本上想做一些类似于$arr[$keys[0]][$keys[1]][$keys[2]]
的事情。除了,在那个例子中,我硬编码它只在$keys
正好有三个元素的情况下工作;这不好,我希望$keys
是任意长度的。
如果我已经成功地解释了我要做的事情,有人能告诉我这是否可能吗?Muchas gracias。
我想我想通了。图中的解决方案将是递归的。以下是我的想法(尚未经过测试,但在我的脑海中,我确信这是正确的):
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);
}