演算子の優先順位
演算子の優先順位は、二つの式が"緊密に"結合している度合いを指定します。
例えば、式
演算子の優先順位が等しい場合は、その結合性によって評価順
(右から評価するのか、あるいは左から評価するのか) が決まります。
たとえば "-" は左結合なので、
優先順位が同じで結合しない演算子を並べることはできません。つまり、たとえば
演算子の結合は、
二項演算子(および三項演算子) の場合にだけ意味があります。
単項演算子は、前置または後置しかないため、
演算子の結合の考え方は適用できません。
たとえば、
厳密には不要な場所であっても、括弧をつけておけばコードの可読性があがります。 明示的にグループ分けをしておくことで、演算子の優先順位や結合性による暗黙のグループ分けに頼らずに済むからです。 次の表では、優先順位が高い順に演算子を挙げています。 同じ行にある演算子は優先順位が等しくなります。そのような場合は、 結合時の評価にしたがってグループ分けが決まります。
例1 結合時の評価
演算子の優先順位や結合性は、あくまでも式のグループ分けだけを決めるものであり、評価順を決めるものではありません。 PHP では一般に、式をどの順番で評価するかは決めていません。 そのため、特定の順序で式が評価されることを前提としたコードを書いてはいけません。 PHP のバージョンが変わったり前後のコードが変わったりしたときに、評価順が変わる可能性があるからです。 例2 評価順序は未定義
例3
上の例の出力は以下となります。 -1, or so I hope -1, or so I hope x minus one equals 3, or so I hope
変更履歴
|