登录
立即注册
首页
>
绿虎论坛
>
历史版块
>
编程
>
PHP
>
讨论/求助
php变量赋值问题?
蛤
@Ta
2014-11-11
3095点击
$a=3; $b=6; $c=1; if($a=0||$b=7 && $c=10){ $a++; $b++; } var_dump($a, $b,$c);
为什么会等于:
boolean true
boolean true
int 10
隐藏样式
查看源码
回复列表(6|
隐藏机器人聊天
)
1
xlm
@Ta
/ 2014-11-11 /
样
/
源
$a=0||$b=7 && $c=10
永远是TRUE。
正确的写法是:
$a==0||$b==7 && $c==10
2
水木易安
@Ta
/ 2014-11-11 /
样
/
源
@
蛤
,$a=7的意思是给a赋值为7,返回布尔值为1,可以理解为:语法无错,赋值成功
3
蛤
@Ta
/ 2014-11-11 /
样
/
源
@
xlm
,
@
水木易安
,明白了,谢谢大家!
4
春风沉醉的晚上
@Ta
/ 2014-11-12 /
样
/
源
@
蛤
,其实这仅仅是运算符优先级的问题,赋值运算符的优先级要小于逻辑运算符。所以if( )里的表达式需要从右往左看。
首先$c=10;【所以$c是整形,且值为10】
然后$b=(7&&10),这样就把$b变成了bool类型的了,值为true。
接着$a=(0||true),显然$a就也变成了bool类型的,值也为true。
最后if(true),运行if里面的语句。不过似乎bool类型的再怎么自增,值都不变。
所以就出现了你那种输出。
5
18768537561
@Ta
/ 2014-11-12 /
样
/
源
厉害,这也会
6
蛤
@Ta
/ 2014-11-13 /
样
/
源
@
春风沉醉的晚上
,谢谢了,觉的你的说法更合理点。
添加新回复
回复需要
登录
。
永远是TRUE。
正确的写法是:
$a==0||$b==7 && $c==10