PHP7中的宇宙飞船操作员混乱(返回-1)

PHP7中的宇宙飞船操作员混乱(返回-1),php,php-7,Php,Php 7,我对PHP7还很陌生,到目前为止,它看起来很强大。我一直在使用PHP5.6,所以我开始了解spaceship operator的用法。但不知何故,我无法获得语句返回的逻辑-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; }

我对PHP7还很陌生,到目前为止,它看起来很强大。我一直在使用PHP5.6,所以我开始了解spaceship operator的用法。但不知何故,我无法获得语句返回的逻辑
-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>';
}
函数正常排序($a,$b):int
{ 
如果($a=$b)
返回0;
如果($a<$b)
返回-1;
返回1;
}
函数空间排序($a,$b):int
{
返回$a$b;
}
$normalArray=[1,34,56,67,98,45];
//在asc中对数组进行排序
usort($normalArray,'normal_sort');
foreach($k=>v的normalArray)
{
回音$k.=>。$v.
; } $spaceArray=[1,34,56,67,98,45]; //按飞船操作员排序 usort($spaceArray,'space_sort'); foreach($spaceArray作为$key=>$value) { 回显$key.'=>'.$value.'
'; }
比较传递给比较函数的两个值时,有三种可能性:
$a<$b
$a==$b
$a>$b
。因此需要三个不同的返回值,PHP选择了整数:
-1
0
、和
1
。我想它也可能是字符串
小的
相等的
大的
或整数
5
7
9
或任何组合,但它不是

从手册

如果第一个参数分别小于、等于或大于第二个参数,则比较函数必须返回小于、等于或大于零的整数

  • $a<$b
    返回
    -1
  • a==b
    return
    0
  • $a>$b
    返回
    1

这不是PHP中类型的工作方式,但您可以这样想:
$a>$b
?其中
-1
表示
false
1
表示
true
0
表示两者都不相等。

在我标记的问题上,这个答案可能重复:我看到了它们。我的问题不完全是宇宙飞船操作员做什么。返回-1的含义是什么?@T先生,你是说“这是什么意思?”还是“目的是什么?”。意思很清楚,第一个操作数小于第二个操作数。目的是什么?抱歉,我选错了词汇表。:)我完全理解这一点。但是return-1、return-0、return-1返回的是一个-1,0,1的整数,还是返回布尔值true/false?这就是我想要了解的。谢谢你的时间。