Php 更改多维数组键值,使其键位于另一个数组中

Php 更改多维数组键值,使其键位于另一个数组中,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有两个阵列: $array = [ 'application' => [ 'foo' => [ 'bar' => 1 ] ] ]; $array_2 = [ 0 => 'application', 1 => 'foo', 2 => 'bar' ]; 知道第二个数组中的最后一个键是第一个数组中必须更改其值的键,如何更改第一个数组的值 如您所见,第二个数组包含第一

我有两个阵列:

$array = [
    'application' => [
        'foo' => [
            'bar' => 1
        ]
    ]
];

$array_2 = [
    0 => 'application',
    1 => 'foo',
    2 => 'bar'
];
知道第二个数组中的最后一个键是第一个数组中必须更改其值的键,如何更改第一个数组的值

如您所见,第二个数组包含第一个数组中的所有键。我想做一些类似的事情:

$array[$array_2] = 2;
。。。我想我必须为循环创建一个


例如,如果要更改
键值,必须执行以下操作:

$array['application']['foo']['bar'] = 2;

。。。但是我不知道我必须更改哪个键,我只有一个包含键的数组,列表中的最后一个键是必须更改其值的键。

这样做就可以了,尽管不确定您想要实现什么

$array[$array_2[0]][$array_2[1]][$array_2[2]] = 2;

您可以构建递归函数,或使用引用:

$result =& $array;

foreach($array_2 as $key) {
    $result =& $result[$key];
}
$result = 2;

print_r($array);

递归地添加键。这项工程—

function get_keys($arr, &$keys){
    $keys = array_merge($keys,array_keys($arr));
    foreach($arr as $a){
        if(is_array($a)){
            get_keys($a, $keys);
        }
    }
}
$array = Array(
    'application' => Array(
        'foo' => Array(
            'bar' => 1
        )
    )
);
$keys = Array();
get_keys($array, $keys);
var_dump($keys);
输出-

array
  0 => string 'application' (length=11)
  1 => string 'foo' (length=3)
  2 => string 'bar' (length=3)

“如何更改仅包含第一个数组键的第二个数组的第一个数组的值。”-不确定要实现什么。你能为问题添加预期的输出吗?但是不要害怕编写你自己的代码,你需要一个
for
或递归方法。这正是我想要的!谢谢类似这样,但更“自动”。无论如何,谢谢你。