我有一个像
这样的数组$arr = [
'foo' => [
'bar' => [
1
],
'baz' => [
1
]
]
]
和另一个
$path = ['foo', 'bar', 0];
我需要用$path
来修改$arr
的值。我需要非常简单的解决方案,我尝试了像
$arr...$path = 2;
$arr[...$path] = 2;
修改后的$arr
看起来应该是
$arr = [
'foo' => [
'bar' => [
2
],
'baz' => [
1
]
]
]
但是我得到了错误。我并不总是知道数组有多少层
您的路径不正确-对于$arr[$path] = 2;
,您需要
$path = ['foo', 'bar', 0];
$p = &$arr;
foreach($path as $step)
$p = &$p[$step];
echo $p . "'n";
$p = 2;
print_r($arr);
或与
$path = ['foo', 'bar'];
$p = &$arr;
foreach($path as $step)
$p = &$p[$step];
echo $p[0] . "'n";
$p[0] = 2;
print_r($arr);
试试这个:
$link =& $arr;
foreach ($path AS $p)
{
$link =& $link[$p];
}
$link[0]++;
$arr[$path[0]][$path[1]] ='XXX'