darudaru

だるだるしてるエンジニア

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」という演算子も知りませんでした。でもなにより、ぬるがったいえんざんしが名前的にも使いやすさ的にも好きです。