我想修改一个递归数组的值。
一个数组将path
提供给要更改的变量:
$scopePath
表示改变的路径。
例如if $scopePath==Array("owners","products","categories")
标记美元= "价格";
我想将$value["owners"]["products"]["categories"]["tag"]
更改为true
$u=$value;
foreach ($scopePath as $i => $s) {
if (!isset($u[$s]))
$u[$s]=Array();
$u=$u[$s];
}
$u[$tag]=true;
我知道问题是由于$u=$u[$s]这一行,因为这改变了对$u的引用,但我不知道如何修复它
使$u
引用$value
或$value
中的元素。
$u = &$value;
foreach($scopePath as $i => $s) {
if (!isset($u[$s]))
$u[$s]=Array();
$u = &$u[$s];
}
$u["tag"] = true;
$scopePath = array("owners","products","categories")
print_r($value);
将输出
Array
(
[owners] => Array
(
[products] => Array
(
[categories] => Array
(
[tag] => 1
)
)
)
)
要更改$value
变量,必须在第一行使用&
:
$u = &$value;