Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用一些外键从PHP关联数组中提取内部数组_Php_Nested_Associative Array - Fatal编程技术网

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

使用一些外键从PHP关联数组中提取内部数组,php,nested,associative-array,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

我有一个数组$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
)
Array
(
  [c] => Array
    (
        [d] => 123
        [s] => 4
    )
)
或者,无论何时使用$keys2,输出都应为

Array
(
    [d] => 123
    [s] => 4
)
Array
(
  [c] => Array
    (
        [d] => 123
        [s] => 4
    )
)
这很简单,我可以通过在第一种情况下使用$a[a][b][c]和在第二种情况下使用$a[a][b]来实现结果

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

试试这个。 注释用代码表示

它将循环遍历键并返回搜索的值

$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.

如果我的回答有问题,请说出来。我很乐意修复它。你的答案没有错,实际上我在php函数中搜索bulid