为什么我$c=$a;和$c=&$a;输出的是一样的
第一题:
“我在慕课网学习php”从$a赋值给$b,当你输出$b=我在慕课网学习php”----这个应该没有异议吧。
接下来第5步你$a从新赋值为“我天天在慕课网学习”并且赋值给$c ,所以$c 输出“我天天在慕课网学习
第二题:
“我在慕课网学习php”从$a赋值给$b,当你输出$b=我在慕课网学习php”----这个一样的应该没有异议吧。
接下来第5步你$a从新赋值为“我天天在慕课网学习”并且赋值给$c ,所以$c 输出“我天天在慕课网学习。
所以输出的都是一样的:
唯一不同的就是&符号,第二题当你$a和$c不管谁发生了变化值都一起变化。
但是第一题就不会了,如果你从新给$a$c赋值的话他们只改变他们自己。这是区别。
学过c语言的指针概念就不难理解&的意思了。
我的理解是&$a的含义是加了&后就会变成是引用最新的a的定义值
老铁,你这顺序不对啊
老铁,你这顺序不对啊。
写成这样就能看出区别:
$a = "我在慕课网学习PHP!";
$b = $a;
$c = &$a;
$a = "我天天在慕课网学习PHP!";
echo $b."<br />";
echo $c."<br />";
这是 传址 假设变量都有自己独立的仓库 简单的说 就是&$a 就是指向 $a 这个变量的仓库 所以值就是相等的
$c=$a;
放在第五行之后了,放在第五行之后,相当于把$a的值赋予$c,所以得到跟a一样的值;你放到第五行之前,打印$c就会发现没有值,因为$a刚开始没有值