strcmp() 和 Spaceship Operator (<=>) 有啥区别
Posted
技术标签:
【中文标题】strcmp() 和 Spaceship Operator (<=>) 有啥区别【英文标题】:What is the difference between strcmp() and Spaceship Operator (<=>)strcmp() 和 Spaceship Operator (<=>) 有什么区别 【发布时间】:2016-09-07 04:16:50 【问题描述】:在 PHP 7 中,我们有一个新的运算符,宇宙飞船运算符<=>
,我发现它与strcmp()
非常相似(如果不相同)。
它们之间有什么区别吗?
编辑:我问他们两者之间的区别,没有提到What is <=> (the 'Spaceship' Operator) in php 7?或What is <=> (the 'Spaceship' Operator) in PHP 7?
【问题讨论】:
What is <=> (the 'Spaceship' Operator) in PHP 7?的可能重复 来自RFCSimilar to strcmp() or version_compare() in behavior, but it can be used on all generic PHP values with the same semantics as <, <=, ==, >=, >.
。
@MarcosPérezGude 我看到了那个,但没有回答我的问题。我的问题是有什么区别,我没有看到任何参考。
strcmp
比较字符串,<=>
比较不同的数据类型。
好的,抱歉,我撤回投票
【参考方案1】:
strcmp - 它是“二进制安全”字符串比较的函数
如果左侧较小,则宇宙飞船运算符 () 返回 -1,如果值相等,则返回 0,如果左侧较大,则返回 1。它可以用于所有具有与 =、> 相同语义的通用 PHP 值。此运算符的行为类似于 strcmp() 或 version_compare()。该运算符可用于整数、浮点数、字符串、数组、对象等。
例如你可以比较arrays或objects,通过float你会得到不同的结果:
$var1 = 1.3;
$var2 = 3.2;
var_dump($var1 <=> $var2); // int(-1)
var_dump(strcmp($var1, $var2)); // int(-2)
还有其他区别……
More example this
【讨论】:
很好的答案,我之前没有测试过【参考方案2】:根据官方文档:
"" 返回“小于、等于或大于零的整数”,而“strcmp”返回“0”,因此您可能找不到任何区别。
通常,这已经足够了,因为我们不关心返回的确切值,但是,如下所示:
回声 5 1; // 1 回声 strcmp(5,1); // 4
我永远无法从宇宙飞船中获得除 1,0,-1 以外的值。
【讨论】:
以上是关于strcmp() 和 Spaceship Operator (<=>) 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
Spaceship::UnexpectedResponse: [!] Missing required information to submit for external testing - Mis