【问题标题】:What is the difference between strcmp() and Spaceship Operator (<=>)strcmp() 和 Spaceship Operator (<=>) 有什么区别
【发布时间】:2016-09-07 04:16:50
【问题描述】:

PHP 7 中,我们有一个新的运算符,宇宙飞船运算符&lt;=&gt;,我发现它与strcmp() 非常相似(如果不相同)。

它们之间有什么区别吗?

编辑:我问他们两者之间的区别,没有提到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 &lt;, &lt;=, ==, &gt;=, &gt;.
  • @MarcosPérezGude 我看到了那个,但没有回答我的问题。我的问题是有什么区别,我没有看到任何参考。
  • strcmp 比较字符串,&lt;=&gt; 比较不同的数据类型。
  • 好的,抱歉,我撤回投票

标签: php php-7


【解决方案1】:

strcmp - 它是“二进制安全”字符串比较的函数

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

例如你可以比较arraysobjects,通过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 以外的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2018-05-30
    • 2013-01-19
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多