What is the difference between strcmp() and Spaceship Operator (<=>)
在php 7中,我们有了一个新的操作符,宇宙飞船操作符
他们之间有什么区别吗?
编辑:我问他们之间的区别,不是指php 7中的<=>(宇宙飞船操作员)是什么?还是php 7中的<=>(宇宙飞船)操作符?
strcmp-它是用于"二进制安全"字符串比较的函数
如果左侧较小,则spaceship操作符(<=>)返回-1;如果值相等,则返回0;如果左侧较大,则返回1。它可以用于所有语义与<,<=,==,>=,>相同的通用PHP值。此运算符的行为与strcmp()或version_compare()相似。此运算符可用于整数、浮点数、字符串、数组、对象等。
例如,您可以比较数组或对象,并通过浮动获得不同的结果:
1 2 3 4 |
还有其他的区别…
再举个例子
根据官方文件:
"<=>"返回"小于、等于或大于零的整数",而"strcmp"retuens"<0、=0或>0",因此您可能无法找到其中的任何差异。
通常情况下,这就足够了,因为我们不关心返回的确切值,但是,有一点可以揭示如下:
回声5<=>1;//1
echo strcmp(5,1);/4
我永远无法从宇宙飞船中得到1,0,-1以外的值。