雑多なブログ

音楽や語学、プログラム関連の話題について書いています

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;
}

備考

ちなみに、厳密な比較ではないので、型のチェックは事前に行う必要がある。