PHP講座入門

演算子 優先順位

演算子とは?

 演算子は加減乗除などを行なうための記号のことです。

 単純な例を見てみましょう。

<?php

$x = 3;
$y = $x + 5;
 どれが演算子なのか、わかりますか?

 =(イコール)は代入演算子です。*(アスタリスク)は乗算(掛け算)演算子です。「掛ける」という記号がx(エックス)と判別が付きづらいので、こんな記号にしたんですかね? +(プラス)は加算(足し算)演算子です。

 わたしたちが通常知っている演算子は加減乗除くらいですが、他にもたくさんあり、特殊なものもあります。

演算子の優先順位

 算数でも習いますが、掛け算は足し算よりも先に計算します。このようなものが演算子の優先順位です。

 また丸括弧を使うと優先順位を変えることができます。これも算数と同じですね。

 覚えておいていただきたいのは、算数にはありませんが、優先順位が同じ場合左から順に計算されていく、ということです。普通の算数ですと問題にならない計算順序が、プログラムでは大きく違ってくることになります。なぜなら、式の中にプログラムを含めることができるからです。

 

 そして演算子によって計算順序が変わることがあります。先ほどの

$y = $x + 5;
 ですが、=(代入演算子)について考えてみてください。まずは右側の式が計算された後、$yに代入されています。これを右結合といいます。

 一方、+(加算演算子)について考えると、$xに5を加える、というように左側から計算されていきます。これを左結合といいます。

 語句の意味を覚える必要はありません。この下の表を見るときに必要なので書いただけです。概念的に分かれば、それで全く問題ありません

 では、優先順位を見てみましょう。まだ出てきていない演算子がありますので、そんなもんか、くらいに見ておいてください。上のものほど優先順位が高く、下に行くにつれて低くなります。PHPのバージョンによって使えない演算子もあります。

演算子の優先順位
結合 演算子 説明
なし clone new オブジェクトの複製(crone)
および 作成(new)
左結合 [ 配列(array()も同じ)
右結合 ** 代数演算子
右結合 ++ -- ~ (int) (float) (string) (array) (object) (bool) @ 型 および 加算子/減算子
エラー制御演算子
なし instanceof
右結合 ! 論理演算子
左結合 * / % 代数演算子
左結合 + - . 代数演算子 そして 文字列演算子
左結合 << >> ビット演算子
なし < <= > >= 比較演算子
なし == != === !== <> <=> 比較演算子
左結合 & ビット演算子 そして リファレンス
左結合 ^ ビット演算子
左結合 | ビット演算子
左結合 && 論理演算子
左結合 || 論理演算子
右結合 ?? 比較演算子
左結合 ? : 三項演算子
右結合 = += -= *= **= /= .= %= &= |= ^= <<= >>= 代入演算子
左結合 and 論理演算子
左結合 xor 論理演算子
左結合 or 論理演算子

 

目次

×