当前位置: 代码迷 >> PHP >> 关于 ++跟&一点疑惑
  详细解决方案

关于 ++跟&一点疑惑

热度:115   发布时间:2016-04-28 18:16:43.0
关于 ++和&一点疑惑
本帖最后由 yinjie_1984 于 2014-11-15 08:22:22 编辑
<?php
$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;
比如和这个比较
<?php
$a=1;
$b=$a++;
?>
这个不就是$b=1,$a=2
有点晕啊。。。
------解决思路----------------------
$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)
*/

对于 $b = $a++;
将 $a 的值 1 取出赋予 $b,但 ++ 的优先级高于 =,所以取值后先不做赋值,而是做 ++,于是 $a 的值为 2(由于 $b 是 $a 的引用,所以此刻 $b 的值也是 2)
然后做赋值操作,$b 的值就等于 1 了
因为 $b 是 $a 的引用,于是 $a 又被改回了 1
  相关解决方案