宇宙船演算子

PHP 7 では次の演算子が追加されました。

  • null 合体演算子 ( ?? )
  • 宇宙船演算子 ( <=> )

<=>

が宇宙船演算子です。

記号が 3 つだし、変な感じじゃありませんか ?


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

これですね。

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


なお、 null 合体演算子 については次をご覧ください。

[PHP] null 合体演算子 (??) を使いこなそう
PHP7で追加されたnull合体演算子??について紹介いたします。
atuweb 開発ブログ

どんなときに使うの ?

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

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

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

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

この書き方に慣れていないと、ぱっと見わかりにくいですよね。

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

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

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

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

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

おお! シンプルですね。

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

詳細! PHP 7+MySQL 入門ノート

大重 美幸
出版社:ソーテック社  発売日:2016-07-01

Amazonで詳細を見る