为什么在数组元素发生更改时,按值分配给数组元素的变量(在先前的引用分配之后)会发生变化?

ste*_*eve 6 php arrays reference

当我运行代码打击时:

$var[0] = 'a';
$tmp = $var;
$var[0] = 'b';
var_dump($tmp); 
Run Code Online (Sandbox Code Playgroud)

输出是:

array(1) { [0]=> string(1) "a" }
Run Code Online (Sandbox Code Playgroud)

当我添加一行如下:

$var[0] = 'a';
$foo = & $var[0]; # added line
$tmp = $var;
$var[0] = 'b';
var_dump($tmp); 
Run Code Online (Sandbox Code Playgroud)

输出变为:

array(1) { [0]=> &string(1) "b" }
Run Code Online (Sandbox Code Playgroud)

如果我$foo通过引用一个数组的元素来赋值变量$var[0],那么$tmp按值赋值给数组的变量$var是否会改变?为什么会这样?

Mic*_*oel 2

这是在文档中提出的,页面上的评论之一实际上提到了这种特定行为。