关于 ++和&一点疑惑 本帖最后由 yinjie_1984 于 2014-11-15 08:22:22 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $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)*/对于 $b = $a++;将 $a 的值 1 取出赋予 $b,但 ++ 的优先级高于 =,所以取值后先不做赋值,而是做 ++,于是 $a 的值为 2(由于 $b 是 $a 的引用,所以此刻 $b 的值也是 2)然后做赋值操作,$b 的值就等于 1 了因为 $b 是 $a 的引用,于是 $a 又被改回了 1 如果你不知道运算符的优先级 可以这样理解!<?php$a=1;$b=&$a; //相当于告诉你 a、b指向同一地址!$c=$a++; //先把a的当前值赋给c 之后 a自加1$b=$c;形象点说就是 a b 代表同一抽屉里有几个苹果! 小明负责看一眼a所在的抽屉 把抽屉里有几个苹果记住(即a是多少),然后往抽屉里多放一个苹果! 然后再把b所在的抽屉里的苹果数变成刚刚记住的苹果数,即a的值! 所以变来变去! 又变回a了! 第一种情况,没有引用$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; PHP中的onclick问题 php读取数据库内容然后判断用户的注册时间,大于多久的自动发送一封邮件 急!我调用DZ论坛的附件帖子并分页显示但图片显示不对应怎么解决? 有关php与mysql上传图片的问题 连续出现效果的问题,在线等 问一个关 关于cookie的问题 请教大家一个奇怪的问题,关于404错误的 用IIS可以解释php文件吗? 不能在网页上向qmail中添加用户 php原生态输出的问题求助 mysql_query函数到底怎么用 单域名多服务器配置
$b=$a++;结果:
$b = 1
$a = 2;如果在中间加 $b = &$a;
表示$a $b 指向同一个地址
如果$b改变,$a的值也会变,最终$b = 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)
*/对于 $b = $a++;
将 $a 的值 1 取出赋予 $b,但 ++ 的优先级高于 =,所以取值后先不做赋值,而是做 ++,于是 $a 的值为 2(由于 $b 是 $a 的引用,所以此刻 $b 的值也是 2)
然后做赋值操作,$b 的值就等于 1 了
因为 $b 是 $a 的引用,于是 $a 又被改回了 1
$a=1;
$b=&$a; //相当于告诉你 a、b指向同一地址!$c=$a++; //先把a的当前值赋给c 之后 a自加1$b=$c;形象点说就是 a b 代表同一抽屉里有几个苹果! 小明负责看一眼a所在的抽屉 把抽屉里有几个苹果记住(即a是多少),然后往抽屉里多放一个苹果! 然后再把b所在的抽屉里的苹果数变成刚刚记住的苹果数,即a的值! 所以变来变去! 又变回a了!
$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;