【PHP5】各種演算子
PHP: 演算子 – Manual
http://php.net/manual/ja/language.operators.php
演算子の優先順位
それぞれの演算子には優先順位というものがあって、
違った種類の演算子が混在する場合は、優先順位の高いものから先に演算されます。
必要に応じて強制的に優先順位を設定するために括弧を使用することができます。
PHP: 演算子の優先順位 – Manual
http://php.net/manual/ja/language.operators.precedence.php
算術(代数)演算子
$i = 5 + 2; # 足し算
$i = 5 - 2; # 引き算
$i = 5 * 2; # 掛け算
$i = 5 / 2; # 割り算
$i = 5 % 2; # 5 を 2 で割った余り(=1)
$i = 5 ** 2; # 5 の 2 乗(=25) PHP 5.6 から導入
$i **= 2; # $xx = $xx ** 2; と同様
代入演算子
$i = 5;
左オペランドに右オペランドの式の値を設定することを意味するので、
下記のような記述もできるそうです。
$i = ($j = 4) + 5; # $i は 9 に等しくなり、$j には 4 が代入されます
ビット演算子
$xx | $yy # $xx と $yy の OR
$xx & $yy # $xx と $yy の AND
$xx ^ $yy # $xx または $yy のどちらか一方にセットされていて、
# 両方にセットされていないビットがセットされる
~$xx # $xx のビットをすべて反転させたもの
$xx << 2 # $xx を 2 ビット左シフト
$xx >> 2 # $xx を 2 ビット右シフト(上位ビットには符号ビットを埋める)
比較演算子
$xx == $yy # $xx と$ yy が等しい
$xx === $yy # $xx と$ yy が等しい
$xx != $yy # $xx と $yy が等しくない
$xx <> $yy # $xx と $yy が等しくない
$xx !== $yy # $xx と $yy が等しくない
$xx < $yy # $xx が $yy より小さい
$xx > $yy # $xx が $yy より大きい
$xx <= $yy # $xx が $yy より等しいか小さい
$xx >= $yy # $xx が $yy より等しいか大きい
($xx==2) && ($yy==3) # $xx が 2、かつ、$yy が3であれば
($xx==2) || ($yy==3) # $xx が 2、もしくは、$yy が3であれば
PHP 7 以降で使用可能なものに以下のものがあります。
$a <=> $b # $a が $b より小さいときに負の値、$b と等しいときに 0、
# $b より大きいときに正の値。
$a ?? $b ?? $c # 左から順に評価し、最初に見つかった NULL 以外の値。
# 存在しない場合は NULL
エラー制御演算子
PHP はエラー制御演算子(@)をサポートしています。
PHP の式の前に付けた場合、 その式により生成されたエラーメッセージは無視されます。
※@演算子は、「式」でのみ動作します。
変数、関数、include コール、定数等の 前につけることが可能です。
逆に関数またはクラスの定義や if や foreach 等のような 条件構造の前に
エラー制御演算子を付けることはできません。
PHP: エラー制御演算子 – Manual
http://php.net/manual/ja/language.operators.errorcontrol.php
実行演算子
PHP はバッククォート (“) をサポートします。
バッククォートの中身をシェルコマンドとして実行し、かつ出力が返されます
(変数に代入することが できます)
バッククォート演算子の使用は shell_exec() と等価です。
PHP: 実行演算子 – Manual
http://php.net/manual/ja/language.operators.execution.php
加算子/減算子
PHP は C 言語形式の加算子/減算子(前置・後置ともに)をサポートします。
++$a # $a に 1 を加えて $a を返します
$a++ # $a を返してから、$a に 1 を加えます
--$a # $a から 1 を引いて $a を返します
$a-- # $a を返してから、$a に 1 を引きます
論理演算子
$xx and $yy # $xx および $yy が共に真(TRUE)の時に TRUE を返す
$xx or $yy # $xx または $yy のどちらかが真(TRUE)の時に TRUE を返す
$xx xor $yy # xx または $yy のどちらかが真(TRUE)で、
# かつ両方とも真(TRUE)でない時に TRUE を返す
!$xx # $xx が真(TRUE)でない時に TRUE を返す
$xx && $yy # $xx および $yy が共に真(TRUE)の時に TRUE を返す
$xx || $yy # $xx または $yy のどちらかが真(TRUE)の時に TRUE を返す
文字列連結演算子
文字列を連結します。
$xx = $yy . $zz; # 文字列 $yy と 文字列 $zz を連結します
$xx .= $yy; # $xx = $xx . $yy と同様です。
配列演算子
$a + $b # $a および $b を結合する
$a == $b # $a および $b のキー/値のペアが等しい場合に TRUE を返す
$a === $b # $a および $b のキー/値のペアが等しく、
# その並び順が等しく、 かつデータ型も等しい場合に TRUE を返す
$a != $b # $a が $b と等しくない場合に TRUE を返す
$a <> $b # $a が $b と等しくない場合に TRUE を返す
$a !== $b # $a が $b と同一でない場合に TRUE を返す
+ 演算子は、右側の配列を左側の配列に追加したものを返します。
両方の配列に存在するキーについては左側の配列の要素が優先され、 右側の配列にあった同じキーの要素は無視されます。
PHP: 配列演算子 – Manual
http://php.net/manual/ja/language.operators.array.php
型演算子
instanceof を使用すると
PHP 変数が、どのクラスオブジェクトのインスタンスかを調べることができます。
var_dump($a instanceof MyClass);
PHP: 型演算子 – Manual
http://php.net/manual/ja/language.operators.type.php
条件演算子(三項演算子)
a ? b : c # a が真であれば b さもなくば c
複合演算子
複合演算子とは代入演算子「=」とバイナリ演算子、文字列演算子を組み合わせます。
$a += $b # $a+$b の演算結果を $a に代入する
$a -= $b # $a-$b の演算結果を $a に代入する
$a *= $b # $a*$b の演算結果を $a に代入する
$a /= $b # $a/$b の演算結果を $a に代入する
$a .= $b # $a.$b の演算結果を $a に代入する