php 宇宙飞船有没有 return 除了 -1、0 或 1 以外的东西?

Does php spaceship ever return something other than -1, 0, or 1?

根据this,宇宙飞船运算符 (<=>) returns “一个小于、等于或大于零的整数,取决于 $x 是否小于,等于或大于 $y".

Trying it out,好像只有return-1,0,1.

总是这样吗?

来自 PHP's New feature's page:

Spaceship operator

The spaceship operator is used for comparing two expressions.
It returns -1, 0 or 1 when $a is respectively less than, equal to, or greater than $b.
Comparisons are performed according to PHP's usual type comparison rules.

因此,<=>

只能返回 -101

current implementation 总是 return 那些正常输入的值。当它比较两个数字时,它使用这个宏规范化结果:

#define ZEND_NORMALIZE_BOOL(n)  \
((n) ? (((n)<0) ? -1 : 1) : 0)

(不过,它确实为扩展提供的对象提供了自己的实现,因此这些可以 return 不同的值。)

但是,the official documentation only guarantees "an int less than, equal to, or greater than zero". Its intended usage is in functions such as usort 寻找那些值。

由于这是一个通用约定,如果您正在编写自己的代码,最好坚持这一点,而不是显式检查 -1 和 1。

如果实施发生变化,或者您需要与不同的比较源进行交互,这不太可能在未来引起意外。