运算符优先级决议了运算的递次,运算级高的先盘算,假如优先级雷同,那末运算符的连系方向决议了该怎样运算。经由过程运用括号能够强迫转变优先级。
运算符优先级从高到低递次以下:
连系方向 | 运算符 | 附加信息 |
---|---|---|
无 | clone new | clone 和 new |
左 | [ | array() |
右 | ++ — ~ (int) (float) (string) (array) (object) (bool) @ | 范例和递增/递减 |
无 | instanceof | 范例 |
右 | ! | 逻辑运算符 |
左 | * / % | 算术运算符 |
左 | + – . | 算术运算符和字符串运算符 |
左 | << >> | 位运算符 |
无 | == != === !== <> | 比较运算符 |
左 | & | 位运算符和援用 |
左 | ^ | 位运算符 |
左 | | | 位运算符 |
左 | && | 逻辑运算符 |
左 | || | 逻辑运算符 |
左 | ? : | 三元运算符 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 |
左 | and | 逻辑运算符 |
左 | xor | 逻辑运算符 |
左 | or | 逻辑运算符 |
左 | , | 多处用到 |
对具有雷同优先级的运算符,左连系方向意味着将从左向右求值,右连系方向则反之。关于无连系方向具有雷同优先级的运算符,该运算符有能够没法与其本身连系。
示例:连系方向
<?php $a = 3 * 3 % 5; // (3 * 3) % 5 = 4 $a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2 $a = 1; $b = 2; $a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5 // mixing ++ and + produces undefined behavior $a = 1; echo ++$a + $a++; // may print 4 or 5 ?>
注:运用括号,纵然在并不严厉须要时,一般都能够加强代码的可读性。
只管 =
比别的大多数的运算符的优先级低,PHP 依旧许可相似以下的表达式:if (!$a = foo()),在此例中 foo() 的返回值被赋给了 $a。
以上就是php中运算符的优先级是什么?的细致内容,更多请关注ki4网别的相干文章!