演算子の優先順位は、二つの式が"緊密に"結合している度合いを指定します。 例えば、式 1 + 5 * 3 の答えは 16になり、18とはなりません。 これは乗算演算子("*")は、加算演算子("+")より高い優先順位を有するか らです。必要に応じて強制的に優先順位を設定するために括弧を使用する ことが可能です。例えば、18と評価するためには、 (1 + 5) * 3 とします。
次の表に示すリストは優先順位が最低ものから並べた演算子の優先順位です。
表 10-1. 演算子の優先順位
結合時の評価 | 演算子 |
---|---|
左 | , |
左 | or |
左 | xor |
左 | and |
右 | |
右 | = += -= *= /= .= %= &= |= ^= ~= <<= >>= |
左 | ? : |
左 | || |
左 | && |
左 | | |
左 | ^ |
左 | & |
結合しない | == != === !== |
結合しない | < <= > >= |
左 | << >> |
左 | + - . |
左 | * / % |
右 | ! ~ ++ -- (int) (double) (string) (array) (object) @ |
右 | [ |
結合しない | new |
注意: !は=よりも優先されるはずなの にもかかわらず、PHPは依然としてif (!$a = foo()) のような式も許します。この場合はfoo()の出力が $aに代入されます。