PHP运算符考察点

PHP的错误控制符

  PHP支持一个错误的运算符:@  ;当将其放置在一个PHP表达式之前,该表达式可能产生的任何错误信息都被忽略掉

运算符优先级

   常用的运算符优先级如下:

递增/递减 > ! > 算术运算符 > 大小比较 > (不)相等比较 > 引用 > 位运算符(^) > 位运算符(|) > 逻辑与 > 逻辑或 > 三目 > 赋值 > and > xor > or

   常考的运算符优先级如下:

递增/递减 > 算术运算符 > 大小比较 > 逻辑与 > 逻辑或 > 三目 > 赋值 >

运算符优先级
结合方向运算符附加信息
clone new clone 和 new
** 算术运算符
++ -- ~ (int) (float) (string) (array) (object) (bool) @ 类型递增/递减错误控制
instanceof 类型
! 逻辑运算符
* / % 算术运算符
+ - . 算术运算符 和 字符串运算符
<< >> 位运算符
< <= > >= 比较运算符
== != === !== <> <=> 比较运算符
& 位运算符 和 引用
^ 位运算符
| 位运算符
&& 逻辑运算符
|| 逻辑运算符
?? null 合并运算符
? : 三元运算符
= += -= *= **= /= .= %= &= |= ^= <<= >>= 赋值运算符
yield from yield from
yield yield
and 逻辑运算符
xor 逻辑运算符
or 逻辑运算符

比较运算符

== 和 ===的区别:

==:比较值是否相等;
===:比较值与类型是否都相等;

 

注意false的七种情况,都是等值的

整型 0; 浮点 0.0; 空字符串 ‘’; 零字符串 ‘0’; 布尔型 false; 空数组 array(); NULL

 

递增/递减运算符

  • 递增/递减运算符不影响布尔值
  • ture++ 还是 ture,false++也还是false
  • 递减NULL没有效果
  • 递增NULL值为1
  • 递增/递减在前就先运算再返回,在后就先返回再运算
  • ++$a:先执行递增再返回递增后的值;
  • $a++:先返回值再执行递增;

逻辑运算符

短路作用

$a = true || $b == 3;// || 后面的表达式被短路,不会执行

$a = false && $b == 3;// && 后面的表达式被短路,不会执行

||、&& 和 or、and 的优先级是不一样的

$a = false || true; //"||"优先级大于"=",$a 的值是 true

$a = false or true; // "or"优先级小于"=",$a 的值是 false

 

示例

<?php
$a = 0;
$b = 0;

if ($a = 3 > 0 || $b = 3 > 0) {
    $a++;
    $b++;
    echo $a . "\n";
    echo $b . "\n";
}
/**
 * if里面有 = > || 三个运算符,根据运算符优先级, ">" > "||" > "=" 
 * 所以首先执行的是 3 > 0 ,然后执行 || ,3>0 为true,则|| 后面被短路 ,不被执行
 * 所以$a = true ,$b = 0
 * 进入if之后,$a++ ,$a还是true,$b++ ,$b = 1
 * 因此最后的结果是 1 1(echo true,打印的是1)
 */
posted @ 2020-05-05 17:45  初雨诗清风  阅读(154)  评论(0编辑  收藏  举报