$b = $a++;
关键在这里$b=++$a;这样就是你的答案2,2$a++先返回$a的值1然后自加
$b是$a的引用,$b等于1了,$a自然也等于1
关键在这里$b=++$a;这样就是你的答案2,2$a++先返回$a的值1然后自加
$b是$a的引用,$b等于1了,$a自然也等于1
解决方案 »
- mysqli_connect和mysql_connect的区别
- phpmailer使用中的小错误,请高手帮忙
- 有关PHP的switch结构的问题
- php时间函数出错?
- 为什么英文能插入,中文却不行啊?高手帮帮忙~
- 至论坛管理员: 为什么可用分提升要设置得这么死?不能登陆一次给100分么?
- 如何分别得到服务器时间和客户端时间
- 如何讓checkbox獲取數據庫的值?根據值讓checkbox處於選擇狀態或者未勾選狀態
- 这个问题是怎么回事?session_start()出错
- 求教合并表记录的sql语句
- 有人用过paypal website payment pro 的吗,介绍一下经验好吗
- 大家看看这段PHP显示汉字图像的代码为什么不好用?
引用和指针最大的区别就在于指针可以逆解析得到地址,而引用不可以,所以像java就全部是用的引用
手册上还说,这并不像 C 的指针,替代的是,引用是符号表别名。其实这并没有什么根本的区别。究竟是指向机器指令段的某个地址还是指向符号表的某一项,对于非汇编程序员来讲并不是很重要的。只要知道他真实的指向内存的某个位置就可以了楼主的这个问题,其实应该是php的一个bug递增/递减运算符
++$a 前加 $a 的值加一,然后返回 $a。
$a++ 后加 返回 $a,然后将 $a 的值加一。
--$a 前减 $a 的值减一, 然后返回 $a。
$a-- 后减 返回 $a,然后将 $a 的值减一。 于是有
$a = 1;
$b = $a++;
echo "a=$a b=$b";//out a=2 b=1$a = 1;
$b =& $a;
$b = ++$a;
echo "a=$a b=$b"; //out a=2 b=2$a = 1;
$b =& $a;
$b = $a;
$a++;
echo "a=$a b=$b"; //out a=2 b=2这些符合规则与结果的表述而一个例外
$a = 1;
$b =& $a;
$b = $a++;
echo "a=$a b=$b"; //out a=1 b=1
其结果显然是不符合规则的
其中$b = $a++;实际在做$a++; $b=1;的操作尽管可以从运算符的优先级上讲的通,但是他并不符合“递增/递减运算符”的运算规则
于是可以说php的开发者们给我们开了一个小“玩笑”,。经测试在php4和php5的各个版本中都存在着这个“问题”既然这种情况出现的可能性极小,在实际应用中回避就是了。或者干脆就不用“递增/递减运算符”
你的原话如下:
“$a++ 后加 返回 $a,然后将 $a 的值加一。”
1. 把 $a 的值(为1)存到某个地方
2. $a 自增 1,值变为 2
3. 由于 $a 和 $b 指向同一个变量,所以 $b 的值也变成 2
4. 系统从某个地方把值取(为1)出来,赋给 $b,$b 值为 1
5. 由于 $a 和 $b 指向同一个变量,所以 $a 的值也变成 1
这么理解对不对?