使用一些外部键从PHP关联数组中提取内部数组

时间:2017-09-14 07:43:48

标签: php nested associative-array

我有一个数组$ a和一些关键数组,例如$ keys1,$ keys2,....

$a = array('a'=>array('b'=>array('c'=>array('d'=>123,'s'=>4),'r'=>3),'q'=>2),'p'=>1);

$keys1 = array('a','b','c');

$keys2 = array('a','b');

$a =  Array
    (
        [a] => Array
            (
                [b] => Array
                    (
                        [c] => Array
                            (
                                [d] => 123
                                [s] => 4
                            )

                        [r] => 3
                    )

                [q] => 2
            )

        [p] => 1
    )

每当使用$ keys1时,输出应为

Array
(
    [d] => 123
    [s] => 4
)

或者每当使用$ keys2时,输出应为

Array
(
  [c] => Array
    (
        [d] => 123
        [s] => 4
    )
)

这很简单我可以通过在第一种情况下使用$a[a][b][c]并在第二种情况下使用$a[a][b]来实现结果

问题:这些$ key在运行时以数组的形式提供, php中是否有任何函数可以获得结果?

1 个答案:

答案 0 :(得分:1)

试试这个。
评论在代码中。

它将遍历键并返回搜索到的值。

$a = array('a'=>array('b'=>array('c'=>array('d'=>123,'s'=>4),'r'=>3),'q'=>2),'p'=>1);

$keys1 = array('a','b','c');

$keys2 = array('a','b');
$keys = $keys1; // set this as "search value"

$value = $a; // create a copy of original array. Maybe not needed?
Foreach($keys as $key){ // loop keys in search value
    $value = $value[$key]; // overwrite $value with subarray of $value[$key]
}

Var_dump($value); // dump the search return.

https://3v4l.org/ZHBMa