使用数组作为访问另一个数组中元素的键列表


Use array as list of keys for accessing element in another array

好吧,假设我有一个数组$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);
}