我一直在搜索几个小时,阅读http://php.net/manual/en/language.variables.variable.php所有评论,但没有找到解决我问题的方法:(
有一个多维数组,例如:
Array
(
[53] => Array
(
[59] => Array
(
[64] => Array
(
[65] => Array
(
)
[66] => Array
(
)
)
)
)
[67] => Array
(
)
[68] => Array
(
[69] => Array
(
)
)
)
我需要用另一个数组替换$ foo [53] [59] [64] [65]。 “路径”以字符串形式提供,即“53.59.64.65”或“[53] [59] [64] [65]”。
解决此问题的正确语法是什么?
答案 0 :(得分:3)
$array = array(
5 => array(
6 => array(
7 => 'Hello'
)
)
);
// key of the object to replace
$path = "[5][6][7]";
// gets the int values from the keys
if (preg_match_all('/\[(\d+)\]/', $path, $matches) !== false) {
// reference to the array
$addr = &$array;
// for each key go deeper
foreach ($matches[1] as $key) {
$addr = &$addr[$key];
}
// replace the object's value with a new array
$addr = array(8 => 'New');
unset($addr);
var_dump($array);
}
输出
array(1) {
[5]=>
array(1) {
[6]=>
array(1) {
[7]=>
array(1) {
[8]=>
string(3) "New"
}
}
}
}