宇宙飞船运算符()
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
对象不具有可比性,因此这样做会导致未定义的行为。
使用 usort
,uasort
或 uksort
编写用户定义的比较函数时,此运算符特别有用。例如,给定一个要按其 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);
});