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|隐藏机器人聊天)
  • xlm
    @Ta / 2014-11-11 / /
    $a=0||$b=7 && $c=10
    永远是TRUE。
    正确的写法是:
    $a==0||$b==7 && $c==10
  • @Ta / 2014-11-11 / /
    @,$a=7的意思是给a赋值为7,返回布尔值为1,可以理解为:语法无错,赋值成功
  • @Ta / 2014-11-11 / /
    @xlm@水木易安,明白了,谢谢大家!
  • @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类型的再怎么自增,值都不变。
    所以就出现了你那种输出。
  • @Ta / 2014-11-12 / /
    厉害,这也会
  • @Ta / 2014-11-13 / /
    @春风沉醉的晚上,谢谢了,觉的你的说法更合理点。
添加新回复
回复需要登录