已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 讨论/求助

标题: php变量赋值问题?

作者: @Ta

时间: 2014-11-11

点击: 3096

$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. $a=0||$b=7 && $c=10
永远是TRUE。
正确的写法是:
$a==0||$b==7 && $c==10
(/@Ta/2014-11-11 18:32//)

2. @,$a=7的意思是给a赋值为7,返回布尔值为1,可以理解为:语法无错,赋值成功
(/@Ta/2014-11-11 18:37//)

3. @xlm@水木易安,明白了,谢谢大家!
(/@Ta/2014-11-11 18:50//)

4. @,其实这仅仅是运算符优先级的问题,赋值运算符的优先级要小于逻辑运算符。所以if( )里的表达式需要从右往左看。
首先$c=10;【所以$c是整形,且值为10】
然后$b=(7&&10),这样就把$b变成了bool类型的了,值为true。
接着$a=(0||true),显然$a就也变成了bool类型的,值也为true。
最后if(true),运行if里面的语句。不过似乎bool类型的再怎么自增,值都不变。
所以就出现了你那种输出。
(/@Ta/2014-11-12 18:27//)

5. 厉害,这也会
(/@Ta/2014-11-12 18:58//)

6. @春风沉醉的晚上,谢谢了,觉的你的说法更合理点。
(/@Ta/2014-11-13 08:07//)

回复需要登录

9月10日 06:02 星期三

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1