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

时间:2015-11-02 22:48:04

标签: php arrays

好的,我说有一个数组,$arr。我想访问$arr['a']['b']['c']...。我有另一个数组$keys,如下所示:['a', 'b', 'c', ...]。如何使用$keys作为标识符来访问$arr的子元素?

换句话说,我基本上想要做一些事情:$arr[$keys[0]][$keys[1]][$keys[2]]。除此之外,在那个例子中,我只有在$keys正好有三个元素的情况下才能将其硬编码。这不好,我希望$keys具有任意长度。

如果我成功地解释了我想要做的事情,有人可以告诉我是否有可能吗? Muchas gracias。

1 个答案:

答案 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);
}