PHP引用变量,为什么$a=21?

PHP引用变量,为什么$a=21?,php,reference,Php,Reference,有人能用简单的语言向我解释为什么最终输出中$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; // res

有人能用简单的语言向我解释为什么最终输出中$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
$a='1';
回声一美元。“
”;//结果1 $b=&$a; 回音$b。“
”;//结果1 $b=“2$b”; 回音$b。“
”;//结果21 回声一美元。“
”;//结果21为什么? 回声一美元。", " . $b、 //结果21,21

多谢各位。我非常感谢你的帮助。

这是因为当你这么做的时候

$b = "2$b";
它的意思是“将$b的值设置为字符串“2”,后跟$b的当前值

早些时候你把

$b = &$a;
这意味着“为$a创建一个新引用并称之为$b”,或者换句话说,使$b指向内存中$a指向的同一个对象


当您更新$b的值时,实际上是在更新存储在$a和$b都指向的内存块中的值,因此,一旦您将$b设置为特定值,$a将是相同的值,因为它们都引用相同的对象。

这是因为当您这样做时

$b = "2$b";
它的意思是“将$b的值设置为字符串“2”,后跟$b的当前值

早些时候你把

$b = &$a;
这意味着“为$a创建一个新引用并称之为$b”,或者换句话说,使$b指向内存中$a指向的同一个对象


更新$b的值时,实际上是在更新存储在$a和$b都指向的内存块中的值,因此,一旦将$b设置为特定值,$a将是相同的值,因为它们都引用相同的对象

那么,您将“21”指定给
$b
,这是对
$a
的引用。这就是引用的含义…请继续阅读。这是一个练习题,您将“21”指定给
$b
,这是对
$a
的引用。这就是引用的目的…请继续阅读和。这是一个练习。可能混淆的是,当重新设置
$b
的值时,它仍然指向相同的内存地址,而不是指向新字符串
2$b
?我们可以假设
$b
是指向
$a
的指针,当重新分配它的值时,它指向另一个内存地址(与C差不多)。啊哈,,@GordonM,谢谢。明白了。。我想我明白了。这向我解释了“当你更新$b的值时,你实际上是在更新存储在内存块中的值,$a和$b都指向了这个值”也许混淆的是,为什么在重新设置
$b
的值时,它仍然指向相同的内存地址,而不是指向新的字符串
2$b
?我们可以假设
$b
是指向
$a
的指针,当重新分配它的值时,它指向另一个内存地址(与C差不多)。啊哈,,@GordonM,谢谢。明白了。。我想我明白了。这向我解释了“当你更新$b的值时,你实际上是在更新存储在内存块中的值,$a和$b都指向这个值”