strcmp()和Spaceship Operator(< =>)之间有什么区别

时间:2016-05-11 16:15:13

标签: php php-7

PHP 7 中,我们有一个新的运算符,即太空飞船运算符<=>,我发现它与strcmp()非常相似(如果不相同)。

它们之间有什么区别吗?

修改:我问他们两者之间的区别,没有提到What is <=> (the 'Spaceship' Operator) in PHP 7?What is <=> (the 'Spaceship' Operator) in PHP 7?

2 个答案:

答案 0 :(得分:4)

strcmp - 对于&#34;二进制安全&#34; 功能 字符串比较

如果左侧较小,则飞船运营商(&lt; =&gt;)返回-1,如果值相等则返回0,如果左侧较大则返回1。它可以在所有通用PHP值上使用,其语义与&lt; ,&lt; =,==,&gt; =,&gt;。此运算符的行为与strcmp()或version_compare()类似。此运算符可以与整数,浮点数,字符串,数组,对象等一起使用。

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

python-libarchive-c

和其他差异......

More example this

答案 1 :(得分:0)

根据官方文件:

&#34;&LT; =&GT;&#34;返回&#34;小于,等于或大于零的整数&#34;而&#34; strcmp&#34; retuens&#34;&lt; 0,= 0或&gt; 0&#34;,所以你可能没有找到任何区别。

通常情况下,这就足够了,因为我们并不关心返回的确切值,但是,有些内容如下所示:

echo 5&lt; =&gt; 1; // 1
echo strcmp(5,1); // 4

我永远无法从飞船上获得除1,0,-1以外的值。