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.
总是这样吗?
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.
因此,<=>
只能返回 -1
、0
或 1
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。
如果实施发生变化,或者您需要与不同的比较源进行交互,这不太可能在未来引起意外。
根据this,宇宙飞船运算符 (<=>) returns “一个小于、等于或大于零的整数,取决于 $x 是否小于,等于或大于 $y".
Trying it out,好像只有return-1,0,1.
总是这样吗?
Spaceship operator
The spaceship operator is used for comparing two expressions.
It returns-1
,0
or1
when$a
is respectively less than, equal to, or greater than$b
.
Comparisons are performed according to PHP's usual type comparison rules.
因此,<=>
-1
、0
或 1
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。
如果实施发生变化,或者您需要与不同的比较源进行交互,这不太可能在未来引起意外。