结合方向 | 运算符 | 描述 | 说明 |
无 | clone ?new ? | clone 和 new | |
其他 | [ ] | 其他 | |
右 | ++ 、 -- ?、 () 、 ~、 ?int 、 float 、 string 、array、object、bool、 @ | 类型和递增、递减、错误抑制 | |
右 | ! | 逻辑运算符 | |
左 |
| 算术运算符 | |
左 | + ??- ??. | 算术运算符和字符串运算符 | |
左 | << ????左移 ???????????>> ?????右移 | 位运算符 | |
无 | == ??!= ????=== ???????!== ?< ??> ??A <>B ?????不等运算符有两种写法 | 比较运算符 | |
左 | & 按位与 | 位运算符和引用 | |
左 | ^ 按位异或 | 位运算符 | |
左 | | 按位或 | 位运算符 | |
左 | && ??? 逻辑与 | 逻辑运算符 | |
左 | || 逻辑或 | 逻辑运算符 | |
左 | ? ?: | 三元运算符 | |
右 | = ???+= ???-= ???*= ???/= ???.= ????%= ?????&= ?????|= ??????^= ????<<= ???>>= ???=> | 赋值运算符 | |
左 | and (按位与) | 逻辑运算符(与) $a & $b | 将把 $a 和 $b 中都为 1 的位设为 1。 |
左 | xor (按位异或) | 逻辑运算符(异或) | |
左 | or ????(按位或) | 逻辑运算符(或) | |
左 | , |
运算符分类:三大类
单目运算符
???++、--、!、~位运算(按位非)
双目运算符
????+、 -、 *、 /、 %、 >、 <、 ==、
三目运算符
? :
容易混淆的运算符口诀:
先乘除后加减,比较逻辑跟着算,非子来了最优先!
也就是优先级:!(非) >数学类 > 比较类 > 逻辑类
运算符考虑思想:
1、优先级,2、结合方向 3、特例 ?4、BUG ???5、不同类型运算间的转换
未明确优先级别的运算符:
类型检查instanceof示例: objA ?instanceof ?A
其他说明:
运算符与操作数的各种结合情况异常复杂,特殊的案例结果不可预知,无法完全记忆。为了避免特性及BUG
的发生,书写时要求逻辑清晰,操作数配合运算符要尽量有意义。
???????以下的特性或bug注意避免其出现就行,以下是示意代码
<?php
$a =1 ;
$b = $a + $a +$a=2;
//4=1+1+2
// 结果$b是多少?
?>
特例中的编程思想:
在一个有歧义或多种可能运算中,优先按正常顺序尝试进行,如果不行再改变方案。
<?php
$a =1 ;
$b = &$a;
$c = ++ $a ?+ ?$a ++; ?
// 结果$c是多少?
?>
PHP常用运算符优先级表
原文地址:http://www.cnblogs.com/lison-note/p/7482696.html