关于php:strcmp()和<=>之间有什么区别

What is the difference between strcmp() and Spaceship Operator (<=>)

在php 7中,我们有了一个新的操作符,宇宙飞船操作符<=>,我发现它与strcmp()非常相似(如果不相同)。

他们之间有什么区别吗?

编辑:我问他们之间的区别,不是指php 7中的<=>(宇宙飞船操作员)是什么?还是php 7中的<=>(宇宙飞船)操作符?


strcmp-它是用于"二进制安全"字符串比较的函数

如果左侧较小,则spaceship操作符(<=>)返回-1;如果值相等,则返回0;如果左侧较大,则返回1。它可以用于所有语义与<,<=,==,>=,>相同的通用PHP值。此运算符的行为与strcmp()或version_compare()相似。此运算符可用于整数、浮点数、字符串、数组、对象等。

例如,您可以比较数组或对象,并通过浮动获得不同的结果:

1
2
3
4
$var1 = 1.3;
$var2 = 3.2;
var_dump($var1 <=> $var2); // int(-1)
var_dump(strcmp($var1, $var2)); // int(-2)

还有其他的区别…

再举个例子


根据官方文件:

"<=>"返回"小于、等于或大于零的整数",而"strcmp"retuens"<0、=0或>0",因此您可能无法找到其中的任何差异。

通常情况下,这就足够了,因为我们不关心返回的确切值,但是,有一点可以揭示如下:

回声5<=>1;//1
echo strcmp(5,1);/4

我永远无法从宇宙飞船中得到1,0,-1以外的值。