| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
演算子の優先順位演算子の優先順位は、二つの式が"緊密に"結合している度合いを指定します。 例えば、式 1 + 5 * 3 の答えは 16 になり、18 とはなりません。 これは乗算演算子("*")は、加算演算子("+")より高い優先順位を有するか らです。必要に応じて強制的に優先順位を設定するために括弧を使用する ことが可能です。例えば、18と評価するためには、 (1 + 5) * 3 とします。 演算子の優先順位が等しい場合は、その結合性によって評価順 (右から評価するのか、あるいは左から評価するのか) が決まります。 たとえば "-" は左結合なので、 1 - 2 - 3 は (1 - 2) - 3 とグループ分けされて、 評価結果は -4 になります。 一方、"=" は右結合です。つまり $a = $b = $c のグループ分けは $a = ($b = $c) となります。 優先順位が同じで結合しない演算子を並べることはできません。つまり、たとえば 1 < 2 > 1 は PHP では無効になります。 一方 1 <= 1 == 1 は問題ありません。 == 演算子の優先順位が <= 演算子より低いからです。 厳密には不要な場所であっても、括弧をつけておけばコードの可読性があがります。 明示的にグループ分けをしておくことで、演算子の優先順位や結合性による暗黙のグループ分けに頼らずに済むからです。 次の表では、優先順位が高い順に演算子を挙げています。 同じ行にある演算子は優先順位が等しくなります。そのような場合は、 結合時の評価にしたがってグループ分けが決まります。
例1 結合時の評価
<?php 演算子の優先順位や結合性は、あくまでも式のグループ分けだけを決めるものであり、評価順を決めるものではありません。 PHP では一般に、式をどの順番で評価するかは決めていません。 そのため、特定の順序で式が評価されることを前提としたコードを書いてはいけません。 PHP のバージョンが変わったり前後のコードが変わったりしたときに、評価順が変わる可能性があるからです。 例2 評価順序は未定義
<?php 例3 +、-、. の優先順位は同じ
<?php 上の例の出力は以下となります。 -1, or so I hope -1, or so I hope x minus one equals 3, or so I hope
|
![]() |
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「演算子の優先順位」をGoogle検索
|