★ [PHP] 宇宙船演算子 とは

PHP

宇宙船演算子とは

PHP 7 から、使える演算子がいくつか増えました。
宇宙船演算子もその一つです。

これが宇宙船演算子です。

ドン !

<=>


なぜ宇宙船か、というのは、スター・ウォーズの敵の戦闘に似ているから、らしいです。

多分これですね。

「タイ・ファイター」っていうんだ、へー。

どんなときに使うの ?

宇宙船演算子は、比較専用の演算子です。

PHP では sort() などを使う事が多いとおもいます。

ところが、他の言語ではソートする場合こんなに面倒くさいんですね。

// JavaScript
var a = [5,3,9,1,10]
a.sort(function(a,b){
        if( a < b ) return -1;
        if( a > b ) return 1;
        return 0;
});

パットみ、わかりにくいですよね。

PHPでも無名関数や、コレクションライブラリなどで上記のようなソートを使う場合があります。

たとえば、Laravelのコレクションです。

$sorted = collect([5, 3, 1, 4, 2])->sort(function ($a, $b) {
    if ( $a < $b ) return -1;
    if ( $a > $b ) return 1;
    return 0;
})

これを、宇宙演算子を使って書き直すと、次のようになります。

$sorted = collect([5, 3, 1, 4, 2])->sort(function ($a, $b) {
    return $a <=> $b;
})

おお! シンプルですね。

ソートで、「昇順にするのは -1 だったかどうか」と、あまり書かないだけにすぐ忘れてしまいますが、
宇宙船演算子だと直感的に書くますね。

※PHP以外にも宇宙船演算子がありますが、PHPにカテゴライズしておきました。