目次
こんにちは、ともです。
PHPをもう一回勉強してまして、知らない演算子が色々あったのでメモしておきます。
そこで、この記事ではPHPではnull合体演算子、エルビス演算子、『<=>』の演算子についてまとめます。
他のPHP関連の記事はこちらにあります。よろしけば読んでみて下さい。
null合体演算子(??)PHP7から
null合体演算子という演算子が糖衣構文として追加されました。
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
issetを利用して上記のようなありがちなコードを書きますよね。
- nullであれば、nobody
- nullでなければ、その中身
のような処理です。
この処理をnull合体演算子を利用すると次のようになります。
$username = $_GET['username'] ?? 'nobody';
すっきりと記述することができるようになりました。
??はnullだけを通すフィルターのようなものでしょうか。
- null合体演算子はissetのありがちなコードの糖衣構文
- A ?? B のAの存在チェックもしてくれる
- AがNULLの場合のみBを参照する
エルビス演算子(?:)PHP5.3から
5.3にエルビス演算子というものが存在します。
$a = false;
$a = 0;
$a = null;
$a = '未定義';
echo $a ?: 'PHP<br>';
// falsy(null or 0 or undefined or false)の場合は'PHP'を出力する
このような挙動をするようです。
?:はfalsyなものだけを通すフィルターのようなものでしょうか。
エルビスプレスリーに『?:』が似ているからその名前が付いたそうです。確かに似てますね。
宇宙船演算子 <=>
宇宙船みたいだからこの名前が付いたんでしょうね。
大小関係を評価した結果『0, -1, 1』の値が返ってくるようですね。
A <=> B
// Aの方が大きい場合は『1』
// A=Bの場合は『0』
// Aの方が小さい場合は『-1』
数値だけではなく、文字列も同じようです。
<?php
// 整数値
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// 浮動小数点数値
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// 文字列
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>
まとめ
null合体演算子・エルビス演算子・宇宙船演算子について理解をまとめました。
- null合体演算子はnullを通すフィルター
- エルビス演算子はfalsyを通すフィルター
- 宇宙船演算子は大小を比較した結果を『-1, 0, 1』で評価
新たに知らない演算子を知れて楽しかったですね。
あまり使い慣れていない人もいるのではないでしょうか。頭の片隅にでも置いておきたいですね。