我是PHP7的新手,到目前为止看起来非常强大。我一直在使用PHP5.6,所以我开始了解太空飞船运营商<=>
的用法。但不知怎的,我无法得到语句返回-1
的逻辑。我知道返回0
或1
false
或true
的重点。任何人都可以澄清return -1
的用法吗?
Function normal_sort($a, $b) : int
{
if( $a == $b )
return 0;
if( $a < $b )
return -1;
return 1;
}
function space_sort($a, $b) : int
{
return $a <=> $b;
}
$normalArray = [1,34,56,67,98,45];
//Sort the array in asc
usort($normalArray, 'normal_sort');
foreach($normalArray as $k => $v)
{
echo $k.' => '.$v.'<br>';
}
$spaceArray = [1,34,56,67,98,45];
//Sort it by spaceship operator
usort($spaceArray, 'space_sort');
foreach($spaceArray as $key => $value)
{
echo $key.' => '.$value.'<br>';
}
答案 0 :(得分:2)
在比较传递给比较函数的两个值时,您有三种可能性:$a < $b
,$a == $b
或$a > $b
。所以你需要三个不同的返回值,PHP选择了整数:-1
,0
和1
。我想它可以很容易地成为字符串lesser
,equal
和greater
或整数5
,7
和9
或任意组合,但是不是。
来自手册usort()
如果第一个参数被认为分别小于,等于或大于第二个参数,则比较函数必须返回小于,等于或大于零的整数。
$a < $b
返回-1
$a == $b
返回0
$a > $b
返回1
这不是PHP中的类型如何工作,但您可以这样想:是$a > $b
?其中-1
表示false
,1
表示true
,0
表示两者(等于)。