演算子の優先順位
当ページのリンクには広告が含まれています。
ここでは演算子の優先順位をみていきます。
PHPスクリプトで複雑な計算式や条件式を記述する際には、複数の演算子を使う必要があります。
演算子は優先順位の高いものから処理されるので、計算式や条件式を正確に記述するために演算子の優先順位を正しく理解しておきましょう。
演算子の優先順位
演算子の優先順位は以下の表をご覧ください。
優先順位が同じ演算子は「評価」によって判断されます。評価が「left」の場合は左の演算子、「right」の場合は右の演算子から処理されます。評価が「なし」の演算子は一緒に使われることがない演算子です。
優先順位 | 評価 | 演算子 |
---|---|---|
1 | なし | clone new |
2 | left | [ |
3 | left | ** |
4 | right | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ |
5 | なし | instanceof |
6 | right | ! |
7 | left | * / % |
8 | left | + - . |
9 | left | << >> |
10 | なし | < <= > >= |
11 | なし | == != === !== <> |
12 | left | & |
13 | left | ^ |
14 | left | | |
15 | left | && |
16 | left | || |
17 | left | ? : |
18 | right | = += -= *= /= .= %= &= |= <<= >>= => |
19 | left | and |
20 | left | xor |
21 | left | or |
22 | left | , |
四則演算
それでは、簡単な四則演算をみてみましょう。
8 + 3 * 5
答えは「23」ですね。これは足し算や引き算「+ -」よりも掛け算や割り算「* /」の方が演算子の優先順位が高いからです。なので、答えは「55」にはなりません。
実際にスクリプトを作成して、実行してみましょう。
<?php $ans = 8 + 3 * 5; echo $ans . "\n"; ?>
実行結果です。優先順位の高い演算子「*」が先に処理されていることがわかりますね。
23
足し算を先に実行したい場合は丸括弧を使いましょう。
<?php $ans = ( 8 + 3 ) * 5; echo $ans . "\n"; ?>
実行結果です。丸括弧を使ったので、足し算「+」が先に処理されています。
55
条件式
次は複数の演算子を使った、サンプルスクリプトをみてみましょう。
<?php $a = 10; if ( $a % 2 === 0 && $a > 0 ) { echo "正の偶数\n"; } else { echo "その他"; } ?>
変数「$a」に格納された値「10」は正の偶数なので、以下の実行結果になります。
正の偶数
それでは、どのような順序で条件式が処理されたかをみていきましょう。
$a % 2 === 0 && $a > 0
この条件式に使われている演算子を優先順位の高い順に並べると、
% === > &&
の順になるので、この条件式は「$a % 2 === 0」かつ「$a > 0」ならば、正の偶数を出力します。
複数の演算子を使うと見にくくなるので、以下のように丸括弧()を使って、スクリプトを見やすくするのもいいかもしれません。
<?php $a = 10; if ( ($a % 2 === 0) && ($a > 0) ) { echo "正の偶数\n"; } else { echo "その他"; } ?>
この場合、丸括弧を使っても演算子の優先順位に変化はないので、実行結果は同じになります。
正の偶数
次は「配列 - array」をみてみましょう。