有人可以用一种简单的语言向我解释为什么最终输出中$ a = 21吗?
$a = '1';
echo $a . "<br>"; // result 1
$b = &$a;
echo $b . "<br>"; // result 1
$b = "2$b";
echo $b . "<br>"; // result 21
echo $a . "<br>"; // result 21 WHY?
echo $a . ", " . $b; // result 21, 21
Run Code Online (Sandbox Code Playgroud)
谢谢。我非常感谢您的帮助。
因为当你这样做
$b = "2$b";
Run Code Online (Sandbox Code Playgroud)
这意味着“将$ b的值设置为字符串“ 2”,然后加上$ b的当前值。
之前你放
$b = &$a;
Run Code Online (Sandbox Code Playgroud)
这意味着“为$ a创建一个新引用,并将其称为$ b”,换句话说,使$ b指向$ a指向的内存中的同一事物。
当您更新$ b的值时,您实际上是在更新$ a和$ b都指向的内存块中存储的值,因此一旦将$ b设置为特定值,$ a将是相同的值因为它们都引用同一件事。