PHP运算符优先级
在我们前⾯讲PHP逻辑运算符的时候,提到了PHP运算符的优先级,所谓的运算符优先级,指的是在表达式中哪⼀个运算符先计算,哪⼀个后计算,就好像,表达式 1 + 5 * 3 的结果
是 16 ⽽不是 18 是因为乘号(“*”)的优先级⽐加号(“+”)⾼。如果有需要的话,可以⽤括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。
PHP的运算符在运算中遵循的规则是:优先级⾼的操作先执⾏,优先级低的操作后执⾏,如果同⼀优先级,则按照从左到右的顺序进⾏,例如,"-"是左联的,那么 1 - 2 - 3 就等同于 (1 -
2) - 3 并且结果是 -4. 另外⼀⽅⾯,"="是右联的,所以 $a = $b = $c 等同于 $a = ($b = $c)。
1486188938564607.gif括号内的运算符最先执⾏,括号的使⽤,哪怕在不是必要的场合下,通过括号的配对来明确标明运算顺序,⽽⾮靠运算符优先级和结合性来决定,可以提⾼代码的可读性。表按照优先级从⾼到低列出了运算符。同⼀⾏中的运算符具有相同优先级,此时它们的结合⽅向决定求值顺序。
结合⽅向运算符附加信息
⽆ clone new clone和new<
左 [ array()
右 ** 算术运算符
右 ++ -- ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减
⽆ instanceof 类型
右 ! 逻辑运算符
左 * / % 算术运算符
左 + - . 算术运算符和字符串运算符
左 << >> 位运算符
⽆ < <= > >= ⽐较运算符
⽆ == != === !== <> <=> ⽐较运算符
左 & 位运算符和引⽤<
左 ^ 位运算符
左 | 位运算符
运算符优先级按从高到低排列左 && 逻辑运算符
左 || 逻辑运算符
左 ?? ⽐较运算符
左 ? : 三元运算符
右 = += -= *= **= /= .= %= &= |= ^= <<= >>= 赋值运算符
左 and 逻辑运算符
左 xor 逻辑运算符
左 or 逻辑运算符
这么多的优先级别,如果想都记得很清楚,是不太现实的,也没有必要,如果写的表达式很复杂,⽽且包含了较多的运⾏符,不放多使⽤括号,想下⾯这样:
<?php
$a and (($b !=$c) or (5*(50-$d)));
>
这样就能减少出现逻辑错误的可能
有时使⽤括号可以增强代码的可读性。例如,下⾯这样:
<?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
>
以上就是php运算符优先级顺序详解的详细内容,更多请关注php中⽂⽹其它相关⽂章!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论