PHPの演算子を改めて調べてみたら新しい発見があった
先日、「xor」というPHPの演算子を初めて知りました。改めてPHPのドキュメントの演算子の項目を眺めていたら、意外に知らない演算子や使い方を知ることができたので、演算子についてまとめてみます。調べてみると意外に面白い演算子。
代入演算子
- +$a $a を必要に応じてintまたはfloatに変換する。
- -$a $aを負にする。
- $a + $b 足し算。
- $a - $b 引き算。
- $a * $b 掛け算。
- $a / $b 割り算。
- $a % $b $aを$bで割った余り。
- $a ** $b $aの$b乗。PHP5.6から導入された。
比較演算子
- $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。
- $a < $b $aが$bより小さい時にtrue。
- $a <= $b $aが$b以下の時にtrue。
- $a > $b $aが$bより大きい時にtrue。
- $a >= $b $aが$b以上の時にtrue。
- $a <==> $b $aが$bより小さい時に負、等しい時に0、大きい時に正の値を返す。 PHP7より利用可能。記号の呼び方は「宇宙船」。
三項演算子
- (expr1) ? (expr2) : (expr3) expr1がtrueならexpr2、falseならexpr3が値となる。
<?php // 2つの処理の$nameは同じ挙動となる $name = isset($_POST['name']) ? $_POST['name']: ''; if(isset($_POST['name'])){ $name = $_POST['name']; }else{ $name = ''; }
Null合体演算子
ぬるがったいえんざんし。名前がすごい。
- (expr1) ?? (expr2) expr1がnullならexpr2、それ以外の場合はexpr1が値となる。 PHP7より利用可能。
<?php // 2つの処理の$nameは同じ挙動となる $name = isset($_POST['name']) ?? ''; if(isset($_POST['name'])){ $name = $_POST['name']; }else{ $name = ''; }
エラー制御演算子
- @ 式の前につけるとエラーメッセージを無視する
実行演算子
- `` バッククォートの中身をシェルコマンドとして実行する コマンドの実行結果が値として返す。
<?php $output = `ls -al`; // ls -alの実行結果が出力される echo "<pre>$output</pre>";
論理演算子
- $a and $b $aがtrue、かつ$bがtrueの時にtrue。
- $a or $b $aがtrue、または$bがtrueの時にtrue。
- $a xor $b $aまたは$bどちらかがtrue、かつどちらもtrueではない時にtrue。
- ! $a $aがtrueではない時にtrue。
- $a && $b $aがtrue、かつ$bがtrueの時にtrue。
- $a || $b $aがtrue、または$bがtrueの時にtrue。
型演算子
- instanceof 特定のクラスのオブジェクトのインスタンスである場合にtrue。
<?php class Hoge{ } $hoge = new Hoge(); var_dump($hoge instanceof Hoge) // trueとなる
知らない演算子はありましたでしょうか。私は「$a ** $b」という演算子も知りませんでした。でもなにより、ぬるがったいえんざんしが名前的にも使いやすさ的にも好きです。