PHP代码中$a值为21的原因解析:引用赋值与字符串拼接
为什么$a的值会是21?
嘿,这个问题的核心是PHP里的**引用(reference)**机制,咱们一步步拆解你的代码就能明白啦:
第一步:
$a = '1';
这时候变量$a存储的是字符串'1',没什么特殊的。第二步:
$b = &$a;
这里你把$b定义成了$a的引用,而不是复制$a的值。简单说就是,$a和$b现在共享同一个内存地址——不管你修改其中哪一个,另一个都会跟着变,因为它们指向的是同一个东西。第三步:
$b = "2$b";
这行是关键!咱们拆分来看:- 先处理赋值右边的字符串拼接:
"2$b",这时候$b还是$a的引用,所以它当前的值是'1',拼接后就得到了字符串'21'。 - 然后把
'21'赋值给$b——但因为$b是$a的引用,这个操作本质上是修改了$a和$b共同指向的内存内容,所以$a的值也变成了'21'。
- 先处理赋值右边的字符串拼接:
最后一步:
echo $a.", ".$b;
既然$a和$b指向同一个值,输出自然就是21, 21啦。
如果还是有点懵,你可以试试把引用去掉,改成$b = $a;(普通赋值),这时候运行代码会输出1, 21,对比一下就能明显看出引用的作用了。
内容的提问来源于stack exchange,提问作者arun mane
相关产品推荐
相关产品推荐

