PHPの便利な演算子でコードを短くしよう!

phpの便利な演算子

開発の吉野です!
今回の記事ではPHPのコードを短く記述出来る便利な演算子をいくつかご紹介したいと思います。

目次はこちら

  • 1. 三項演算子
  • 2. Null合体演算子
  • 3. エルビス演算子
  • 4. まとめ

 

三項演算子

まずはおそらく一番有名な三項演算子をご紹介したいと思います。
三項演算子は、条件式 ? 式1 : 式2 という記述を行うことで使用できます。

▼具体的なコードで記述すると下記のようになります。


$a = 100;
$b = 100;
echo $a === $b ? ‘$aと$bは同じ値’ : ‘$aと$bは異なる値’;

■実行結果
$aと$bは同じ値
これをif~elseを用いて同様の処理を記述するとコード量が増えてしまいます。


$a = 100;
$b = 100;
if ($a === $b) {
    echo '$aと$bは同じ値';
} else {
    echo '$aと$bは異なる値';
}

しかし、三項演算子を多用しすぎると可読性が下がってしまいますので、三項演算子の中で三項演算子を呼び出すなどの使用方法はあまりお勧めしません。

三項演算子の中で三項演算子を使用


$rand = rand(1, 100);
echo '値:' . $rand;
echo ($rand % 2 === 0) ? (50 <= $rand ? '50以上の偶数' : '50未満の偶数') : (50 <= $rand ? '50以上の奇数' : '50未満の奇数');

 

if~elseと三項演算子を使用


$rand = rand(1, 100);
echo '値:' . $rand;
if ($rand % 2 === 0) {
    echo 50 <= $rand ? '50以上の偶数' : '50未満の偶数';
} else {
    echo 50 <= $rand ? '50以上の奇数' : '50未満の奇数';
}

上記二つの処理は内容自体は同じですが、if~elseと三項演算子を組み合わせたコードの方が処理の流れが理解しやすいと思います。

Null合体演算子

Null合体演算子(??)は、!is_null($hoge) ? $hoge : $fuga のシンタックスシュガーとしてPHP7.0で追加されました。記述は、$hoge ?? $fuga という形で行います。

▼具体的なコードで記述すると下記のようになります。


$userName = '龍野太郎';
echo $userName ?? 'none';

$nickName = null;
echo $nickName ?? 'none';

実行結果
龍野太郎
none

$userNameが非nullのときは第一オペランドの$userNameを返し、nullのときは第二オペランドのnoneを返してくれます。
値が設定されているか確認して、設定されていなければ何らかの値を代入したいときの記述を短くすることが出来ます。

エルビス演算子

エルビス演算子(?:)は三項演算子(条件式 ? 式1 : 式2)の式1部分を省略した形で記述することが出来ます。
記述は、$hode ?: $fuga という形で行います。

▼具体的なコードで記述すると下記のようになります。


$a = 0;
echo $a ?: 'FALSE';

$b = 1;
echo $b ?: 'FALSE';

実行結果
FALSE
1

Null合体演算子と挙動が少し似ていますが、
Null合体演算子(??)は、!is_null($hoge) ? $hoge : $fuga と等価で
エルビス演算子(?:)は、$hoge ? $hoge : $fuga と等価といった違いがあります。

まとめ

今回はいくつかの演算子を紹介させて頂きました。
上記の演算子を使用するとコードをシンプルに記述することが可能ですので、ぜひ使用してみてください!
三項演算子を使用すると、if文より簡潔に条件文を記述することができて、コードもスッキリになるとっても便利です。

jaJapanese