据此,宇宙飞船运算符 (<=>) 返回“一个小于、等于或大于零的整数,具体取决于 $x 是否小于、等于或大于 $y”。
试一试,似乎只返回-1、0或1。
总是这样吗?
宇宙飞船操作员
spaceship 运算符用于比较两个表达式。
它返回-1
,0
或1
when$a
分别小于、等于或大于$b
。
比较是根据 PHP 常用的类型比较规则进行的。
所以,只有-1
,0
或1
可以从<=>
当前的实现总是为正常输入返回这些值。当它比较两个数字时,它使用这个宏来规范化结果:
#define ZEND_NORMALIZE_BOOL(n) \
((n) ? (((n)<0) ? -1 : 1) : 0)
(不过,它确实为扩展提供的对象提供了自己的实现,因此它们可以返回不同的值。)
但是,官方文档只保证“一个 int 小于、等于或大于零”。它的预期用途是在诸如寻找这些值的函数中。
由于这是一个通用约定,因此如果您正在编写自己的代码,那么坚持下去可能比明确检查 -1 和 1 更好。
如果实施发生变化,或者您需要与不同的比较来源进行交互,这不太可能在未来引起意外。