这段php代码中,为什么第三个echo $a变成了EFG,我的理解echo $a 仍然是ABC啊?

<?php
$a="ABC";
$b =&$a;
echo $a; //这里输出:ABC
echo $b;//这里输出:ABC
$b="EFG";
echo $a;//这里$a的值变为EFG 所以输出EFG
echo $b;//这里输出EFG 因为改变的是同一个值。
?>

阅读 2.8k
5 个回答

因为你创建了引用

$b = &$a 

这个时候就创建了对应关系,意味着b与a共用一块内存空间。b改变所以a改变了

&在php中是引用的意思$b =&$a; 使$b$a指向同一个内存,所以改变b的值a也会变

重点是$b =&$a;这个赋值语句。$b实际上指向了$a的内存地址。
当对$b赋值的时候,实际上会改变$a的值。
如果你的第一个赋值语句是$b=$a;则对$b再赋值,就不会改变$a的值了。

$b =&$a;是引用赋值,此时变量$b和$a执行的是相同的内存地址。
当修改$b时,$a的值也同时被修改。

https://segmentfault.com/a/11...

你可以把引用理解为指针。指向的是一块内存地址 而内存地址就是存放你变量的地方

推荐问题
宣传栏