PHP 7で追加された宇宙船演算子は2つの式の大小関係をチェックするときに使います。
たとえば、$aと$bについて大小関係を比較して次のような値を返します。
- $aと$bが一致する場合:0を返す
- $aが$bより大きい場合:1を返す
- $aが$bより小さい場合:-1を返す
使用例は次のようになります。
<?php $a = 10; $b = 100; if (($a <=> $b) == 0) { echo '$aと$bは一致する'; } elseif (($a <=> $b) == 1) { echo '$aは$bより大きい'; } elseif (($a <=> $b) == -1) { echo '$aは$bより小さい'; } ?>
実行結果は次のようになります。
実行結果
$aは$bより小さい
usort関数と宇宙船演算子の組み合わせ
PHPマニュアルのusort関数のページに次のようなコードが載っています。ユーザー定義関数で配列をソートするコードです。
<?php function cmp($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; } $a = array(3, 2, 5, 6, 1); usort($a, "cmp"); foreach ($a as $key => $value) { echo "$key: $value\n"; } ?>
実行結果
0: 1
1: 2
2: 3
3: 5
4: 6
1: 2
2: 3
3: 5
4: 6
宇宙船演算子を使えば、上記のような$aと$bの比較部分を次のように1行のコードで書き換えることができます。
<?php function cmp($a, $b) { return $a <=> $b; } $a = array(3, 2, 5, 6, 1); usort($a, "cmp"); foreach ($a as $key => $value) { echo "$key: $value\n"; } ?>
実行結果は同じです。
実行結果
0: 1
1: 2
2: 3
3: 5
4: 6
1: 2
2: 3
3: 5
4: 6