<?php
$a="123";
$b=$a;
$c = &$a;
$a = "321";
echo $b;
echo "<br/>";
echo $c;
?>
此代码中, $c所在的位置是在二次定义的$a的上方,为何$c调用的值不是首次定义的123,而是下方的321?
其实可以这样理解:
$a 他刚开始=123的,而后面你又赋予了¥a=321
假如你不加&的话,那么就是直接=123,这个值
假如你加了&的话,那么得到的就是最新的=321这个值
就算你后面再填写一行代码$a = "333"; 加了$的会直接变化成333这个值
第二次定义a的时候,系统给a分配的内存地址没有变,还是上次那块地址,里面装的东西变成了新的。
让c也指向那块地址后,输出的c自然也就是新的a值。
顺序从上往下排就可以,首先$a=123;的,当$c = &$a; 的时候$c就等于123;然后$a从新被定义为321,这时候取$c的值还是要被$a赋值的,所以$c就变成了321
因为你的c取了a的地址后,a中的值有再次刷新呀