应用 IT 技术
解决实际问题

PHP常用运算符的优先级记忆法 (附经典面试真题)

各种编程语言的运算符都是有优先级的,不注意优先级的话很容易造成与预期不符的结果。PHP 中不同优先级的运算符可归为22项,要将它们按顺序一一记住确实不大容易,不过我们并不需要这么做,因为毕竟平时常用的运算符只是一部分,我们只需记住这部分的优先级即可,而如果有使用到其它运算符时有不太明确的地方再查表(PHP:运算符优先级 – PHP手册)也不迟。

我们常用的 PHP 运算符优先级如下:
递增/递减 > 逻辑非 !> 算术运算符 > 大小比较 >(不)相等比较 > 引用 > 位运算符 ^ > 位运算符 | > 逻辑与 && > 逻辑或 || > 三目 ?: > 赋值 > and > xor > or

其中红字部分运算符最常用到,我们可以将这部分优先级顺序简记为【一算二比三逻辑四赋值】。

此外要注意的一点是,&& 和 || 与 and 和 or 虽然作用是一样的,但是它们的优先级却不同。&& 和 || 的优先级高于赋值运算符,执行时先逻辑后赋值;而 and 和 or 的优先级低于赋值运算符,执行时先赋值后逻辑。

示例:

<?php
  $a=false || true;
  $b=false or true;
  var_dump($a);  //boolean(true)
  var_dump($b);  //boolean(false)
?>

考察 PHP 运算符优先级的经典面试真题

请写出下列程序输出的结果:

<?php
  $a=0;
  $b=0;
  if($a=3>0 || $b=3>0){
    $a++;
    $b++;
    echo $a.'<br/>';
    echo $b;
  }
?>

解析:
1. 首先要明确条件判断语句中出现的几种运算符的优先级为 > > || > =
2. 根据优先级先执行两个比较运算【3>0】,结果均为 true,于是条件判断语句变成【$a=true || $b=true】;
3. 之后执行逻辑或 || 运算,不过根据该运算符的短路作用,只要它前面的值为 true,则后面的赋值运算【$b=ture】将会被忽略不会执行,于是条件判断语句变成【$a=true】;
4. 最后执行赋值运算【$a=true】,结果 $a=true,条件判断语句结果为 true,而 $b=0 不变;
5. 进入条件执行语句,由于递增/递减运算符不影响布尔值,所以【$a++】后 $a=true 不变;而【$b++】后 $b=1;
6. 执行 echo,$a 与 $b 均输出1。


最后,就如 PHP 手册里说的那样:哪怕在不是必要的场合下,通过括号的使用来明确标明运算顺序,而非靠运算符优先级来决定,可以增加代码的可读性。推荐使用!

未经允许不得转载:酷睿N核博客 » PHP常用运算符的优先级记忆法
支付宝打赏微信打赏

如果文章对您有所帮助,欢迎移至上方按钮打赏作者

分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址