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
