function set(array &$array, $path, $value)
{
print_r($array);
echo('
');
$segments = explode('.', $path);
while(count($segments) > 1)
{
$segment = array_shift($segments);
if(!isset($array[$segment]) || !is_array($array[$segment]))
{
$array[$segment] = [];
}
$array =& $array[$segment];
print_r($array);
echo('
');
}
$array[array_shift($segments)] = $value;
print_r($array);
echo('
');
}
$arr = ['a' => 1, 'b' => 2, 'c' => 3];
set($arr, 'a.b.d', 4);
print_r($arr);
结果:
为什么最终结果不是Array ( [d] => 4 ),而是 Array ( [a] => Array ( [b] => Array ( [d] => 4 ) ) [b] => 2 [c] => 3 ) ?
这个怎么解: $array =& $array[$segment];
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
问题主要出现在
运行一下,如果不明白有问题可以留言