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) */
标签:false,++,递增,运算符,考察点,优先级,PHP,true 来源: https://www.cnblogs.com/starshine-zhp/p/12831599.html