宇宙飛船運算子()

PHP 7 引入了一種新的運算子,可用於比較表示式。如果第一個表示式小於,等於或大於第二個表示式,則此運算子將返回 -1,0 或 1。

// Integers
print (1 <=> 1); // 0
print (1 <=> 2); // -1
print (2 <=> 1); // 1

// Floats
print (1.5 <=> 1.5); // 0
print (1.5 <=> 2.5); // -1
print (2.5 <=> 1.5); // 1
 
// Strings
print ("a" <=> "a"); // 0
print ("a" <=> "b"); // -1
print ("b" <=> "a"); // 1

物件不具有可比性,因此這樣做會導致未定義的行為。

使用 usortuasortuksort 編寫使用者定義的比較函式時,此運算子特別有用。例如,給定一個要按其 weight 屬性排序的物件陣列,匿名函式可以使用 <=> 返回排序函式所期望的值。

usort($list, function($a, $b) { return $a->weight <=> $b->weight; });

在 PHP 5 中,這需要更復雜的表達。

usort($list, function($a, $b) {
    return $a->weight < $b->weight ? -1 : ($a->weight == $b->weight ? 0 : 1);
});