0

据此宇宙飞船运算符 (<=>) 返回“一个小于、等于或大于零的整数,具体取决于 $x 是否小于、等于或大于 $y”。

试一试,似乎只返回-1、0或1。

总是这样吗?

4

2 回答 2

3

PHP 的新功能页面

宇宙飞船操作员

spaceship 运算符用于比较两个表达式。
它返回 -1,01when$a分别小于、等于或大于$b
比较是根据 PHP 常用的类型比较规则进行的。

所以,只有-101可以从<=>

于 2021-11-30T14:48:34.517 回答
1

当前的实现总是为正常输入返回这些值。当它比较两个数字时,它使用这个宏来规范化结果:

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

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

但是,官方文档只保证“一个 int 小于、等于或大于零”。它的预期用途是在诸如寻找这些值的函数中。

由于这是一个通用约定,因此如果您正在编写自己的代码,那么坚持下去可能比明确检查 -1 和 1 更好。

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

于 2021-11-30T14:56:55.207 回答