我有两个数组:
$array = [
'application' => [
'foo' => [
'bar' => 1
]
]
];
$array_2 = [
0 => 'application',
1 => 'foo',
2 => 'bar'
];
如何更改第一个数组的值,知道第二个数组中的最后一个键是第一个数组中必须更改值的键?
如您所见,第二个数组包含第一个数组中的所有键。我想做点什么:
$array[$array_2] = 2;
......我想我必须创建一个for
循环?
例如,如果我想更改bar
键值,我必须这样做:
$array['application']['foo']['bar'] = 2;
...但我不知道我必须更改哪个键,我只有一个包含键的数组,列表中的最后一个键是必须更改值的键。
答案 0 :(得分:1)
您可以构建递归函数,或使用引用:
$result =& $array;
foreach($array_2 as $key) {
$result =& $result[$key];
}
$result = 2;
print_r($array);
答案 1 :(得分:0)
这样做,虽然不确定你想要达到的目的。
$array[$array_2[0]][$array_2[1]][$array_2[2]] = 2;
答案 2 :(得分:0)
递归添加密钥。这有效 -
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);
OUTPUT -
array
0 => string 'application' (length=11)
1 => string 'foo' (length=3)
2 => string 'bar' (length=3)