Home >Backend Development >PHP Tutorial >关于 ++和&一点疑惑
$a=1;
$b=&$a;
$b=$a++;
//求$a、$b
第二句话的意思是b也指向了a的地址;
第三句话的意思是在使用后a的值加1,所以$b=1;
关键是后面我不了解了$a++,不表示使用后加1,所以现在$a=2;
可是$b的地址和a的地址一样岂不是$b也等于2?还是第三句话后面的$a++根本就是没执行?这道题答案是$a,$b都是1;
比如和这个比较
$a=1;
$b=$a++;
?>
这个不就是$b=1,$a=2
有点晕啊。。。
$a=1;
$b=$a++;
结果:
$b = 1
$a = 2;
如果在中间加 $b = &$a;
表示$a $b 指向同一个地址
如果$b改变,$a的值也会变,最终$b = 1,$a = 1
$a = 1;$b = $a++;var_dump($a, $b);/*int(2)int(1)*/$a = 1;$b = &$a;$a++;var_dump($a, $b);/*int(2)int(2)*/$a = 1;$b = &$a;$b = $a++;var_dump($a, $b);/*int(1)int(1)*/
基础没打好~ 谢谢版主 明白了!
如果你不知道运算符的优先级 可以这样理解!
<?php$a=1;$b=&$a; //相当于告诉你 a、b指向同一地址!$c=$a++; //先把a的当前值赋给c 之后 a自加1$b=$c;
第一种情况,没有引用
$a=1;$b=$a; // 这时 b=1 a=1$b=$a++; // a先赋值给b,然后再自增 b=1 a=2echo $a;echo $b;
$a=1;$b=&$a; // b引用a,就是a,b是指向同一内存地址$b=$a++; // a 把值读出后执行自增,a=2 b=2,然后再把值赋值给b,所以b=1 a=1echo $a;echo $b;