运算符
运算符操作或作用于一个(一元运算符,如 !$a
和++$a
),两个(二元运算符,如 $a + $b
或 $a >> $b
)或三个(唯一的三元运算符是 $a ? $b : $c
)表达式。
运算符优先级会影响运算符的分组方式(就像有括号一样)。以下是按优先顺序排列的运算符列表(第二列中的运算符)。如果多个运算符在一行中,则分组由代码顺序确定,其中第一列指示关联性(请参阅示例)。
协会 | 操作者 |
---|---|
剩下 | -> :: |
没有 | clone new |
剩下 | [ |
对 | ** |
对 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ |
没有 | instanceof |
对 | ! |
剩下 | * / % |
剩下 | + - . |
剩下 | << >> |
没有 | < <= > >= |
没有 | == != === !== <> <=> |
剩下 | & |
剩下 | ^ |
剩下 | | |
剩下 | && |
剩下 | || |
对 | ?? |
剩下 | ? : |
对 | = += -= *= **= /= .= %= &= ` |
剩下 | and |
剩下 | xor |
剩下 | or |
完整信息在 Stack Overflow 。
请注意,始终首先评估函数和语言结构(例如 print
),但将根据上述优先级/关联性规则使用任何返回值。如果省略语言构造之后的括号,则需要特别小心。例如 echo 2 . print 3 + 4;
echo 的 721
:print
部分评估 3 + 4
,打印结果 7
并返回 1
。之后,2
被回应,与 print
(1
)的返回值连接在一起。