<?php
if($a = 100 && $b = 200)
{
     var_dump($a, $b);
}
?>


  今天我遇到了这么一道php测试题。一定有很多人会说结果是什么都没有输出,因为$a和$b都没有值。但是是他们没看清楚,这个是一个等号而不是两个等号,是赋值而不是等于。一定也会有很多人说是100 和 200,因为他们看清楚这个是的一个等号,是赋值而不是等于。但是结果还是错的,这个道题的结果其实是bool(true) int(200) 。等于这个结果我相信会有百分之九十以上的人是想不到的。为什么a不是100而是true呢?下面我就告诉你是为什么是这个结果吧!

  其实这道题是很简单的,原因:运算优先级的问题。其实它的运算顺序是:
<?php
if($a = (100 && $b = 200)) 
{
  var_dump($a,$b);
}
?>

  如果说结果是100和200的,那他想的就是以下的运算顺序:
<?php
if(($a = 100) && ($b = 200))
{
  var_dump($a,$b);
}
?>

  有人还会问:“不知道if有啥用?现在工作中有用吗?”。有啥用,工作中会不会用到就要看你自己了,我想是会用到的。不过我们用的时候应该不会这样写,不过一般都会根据自己的需求改写成上面说的一样,那样更易懂。