登录
立即注册
首页
>
绿虎论坛
>
历史版块
>
编程
>
PHP
>
源码
你能撸出来?
梦浪的小虾米
@Ta
2015-07-18
18073点击
<?php
$a = 3;
$b = 5;
if($a=5 || $b=7){
$a++;
$b++;
}
echo $a.$b;
?>求解惑,为何a为1
隐藏样式
查看源码
回复列表(29|
隐藏机器人聊天
)
1
老虎会不会游泳
@Ta
/ 2015-07-18 /
样
/
源
#和谐#
2
消失的安装包
@Ta
/ 2015-07-18 /
样
/
源
城里人真会玩
3
BuYi
@Ta
/ 2015-07-18 /
样
/
源
你不会显示出来的结果为14吧
4
水木易安
@Ta
/ 2015-07-18 /
样
/
源
我的猜想,错了勿喷~
在if后的 $a=5 是一句赋值语句 而不是判断的
复制成功,返回布尔值为1
但是布尔值是不可以做自增运算 ,于是就是一直是 1
关于b是因为 ||(短路或) 短路性,
一旦前面的为真,后头的就忽略了
然后$b还是5,做自增,为6
然后输出为 1 6
5
x5
@Ta
/ 2015-07-18 /
样
/
源
@
梦浪的小虾米
,
$a = 3; //赋值
$b = 5;
if ($a=5 || $b = 7)//运算符优先级 逻辑运算符(||)高于赋值运算符(=),即$a = (bool)ture;$b=5;
{
$a++; //$a++ 值不变为1
$b++; //$b++值为5+1
}
echo $a.$b;
var_dump($a);可以看到变量类型,布尔值包括true和false两个值
6
梦浪的小虾米
@Ta
/ 2015-07-18 /
样
/
源
@
1432572068
,
@
水木易安
,我昨天试过$a=3;
echo a++;
echo $a;
发现a++时,a不变,然后echo $a时,发现$a值加1
这里的a在a++后输出照理说应该也加1啊
8
zoqu
@Ta
/ 2015-07-18 /
样
/
源
城里人真会玩
9
姜辰
@Ta
/ 2015-07-18 /
样
/
源
城里人真会玩。
10
vanwoos
@Ta
/ 2015-07-18 /
样
/
源
@
水木易安
,赞成,但是此处或运算符的短路性还真不容易理解。。。
11
Ta
@Ta
/ 2015-07-18 /
样
/
源
@
梦浪的小虾米
,回复6楼,不久前也遇到一个类似6六楼的事情。比如楼层数:count出楼数后,用$num++,echo出来是竟然是楼数加二,不用$num++,直接把$num和一些数据insert into数据库,$num竟然有加一…………好困惑。可能哪里没弄好吧。
12
Ta
@Ta
/ 2015-07-18 /
样
/
源
@
水木易安
,
@
vanwoos
,为什么$a赋值后会变成bool????
13
zoqu
@Ta
/ 2015-07-18 /
样
/
源
@
Ta
,
@
1432572068
,
@
水木易安
,好尼玛神奇,在条件句中赋值。没见过。好神奇!
14
Ta
@Ta
/ 2015-07-18 /
样
/
源
@
zoqu
,又不是没见过,你不会才明白吧
15
zoqu
@Ta
/ 2015-07-18 /
样
/
源
@
Ta
,大神给我讲讲???
16
Ta
@Ta
/ 2015-07-18 /
样
/
源
@
vanwoos
,原来这玩意叫短路性?
17
Ta
@Ta
/ 2015-07-18 /
样
/
源
@
zoqu
,不敢当,我只是以前犯过这种错误而已
18
zoqu
@Ta
/ 2015-07-18 /
样
/
源
@
Ta
,大神给我讲讲。。。。
19
快乐是福
@Ta
/ 2015-07-18 /
样
/
源
$a=5 || $b=7 等于 $a=(5 || $b=7)
20
zoqu
@Ta
/ 2015-07-18 /
样
/
源
@
快乐是福
,更神奇,给我讲讲??
<
1
2
>
添加新回复
回复需要
登录
。
在if后的 $a=5 是一句赋值语句 而不是判断的
复制成功,返回布尔值为1
但是布尔值是不可以做自增运算 ,于是就是一直是 1
关于b是因为 ||(短路或) 短路性,
一旦前面的为真,后头的就忽略了
然后$b还是5,做自增,为6
然后输出为 1 6
$a = 3; //赋值
$b = 5;
if ($a=5 || $b = 7)//运算符优先级 逻辑运算符(||)高于赋值运算符(=),即$a = (bool)ture;$b=5;
{
$a++; //$a++ 值不变为1
$b++; //$b++值为5+1
}
echo $a.$b;
var_dump($a);可以看到变量类型,布尔值包括true和false两个值
echo a++;
echo $a;
发现a++时,a不变,然后echo $a时,发现$a值加1
这里的a在a++后输出照理说应该也加1啊