PHP: 宇宙船演算子とは?
PHP7以降で導入された、宇宙船演算子について調べた。
名前だけ見ても、なんのこっちゃって感じなので、PHP公式ドキュメントを確認してみた。内容は以下の通り。
$a <=> $b 宇宙船 $a が $b より小さいときに負の値、 $b と等しいときに 0、 $b より大きいときに正の値。 PHP 7 以降で使用可能。
PHP: 比較演算子 - Manual
https://www.php.net/manual/ja/language.operators.comparison.php
どの場合にどの値になるのかは、文章で覚えようとすると忘れそうだ。
なので下記のように表にするとイメージしやすくなると思う。
< | = | > |
---|---|---|
-1 | 0 | 1 |
使いどころについて
試しにコードを書いてみた。
if で使うと、ちょっと長ったらしい感じになってしまう。
$result = $a <=> $b; if ($result === -1) { // ... } elseif ($result === 0) { // ... } elseif ($result === 1) { // ... }
switchはスッキリ書けそうな感じ。
switch ($a <=> $b) { case -1: // ... break; case 0: // ... break; case 1: // ... break; default: // .. break; }
備考
ちなみに、厳密な比較ではないので、型のチェックは事前に行う必要がある。