strcmp() 和 Spaceship Operator (<=>) 有什么区别
What is the difference between strcmp() and Spaceship Operator (<=>)
在PHP 7中我们有一个新的运算符,宇宙飞船运算符<=>
,我发现它与strcmp()
.
它们有什么区别吗?
编辑:我问的是它们之间的区别,没有提到 or What is <=> (the 'Spaceship' Operator) in PHP 7?
strcmp - 它是 function for "binary safe" string comparison
宇宙飞船运算符 (<=>) returns 如果左侧较小则为 -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)
和其他区别...
根据官方文档:
"<=>" returns "an integer less than, equal to, or greater than zero" 而 "strcmp" 返回 "<0 , =0 or >0", 所以你可能找不到任何区别。
通常,这就足够了,因为我们不关心返回的确切值是什么,但是,如下所示:
回声 5 <=> 1; // 1
回声 strcmp(5,1); // 4
除了 1,0,-1 之外,我无法从宇宙飞船中获取其他值。
在PHP 7中我们有一个新的运算符,宇宙飞船运算符<=>
,我发现它与strcmp()
.
它们有什么区别吗?
编辑:我问的是它们之间的区别,没有提到
strcmp - 它是 function for "binary safe" string comparison
宇宙飞船运算符 (<=>) returns 如果左侧较小则为 -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)
和其他区别...
根据官方文档:
"<=>" returns "an integer less than, equal to, or greater than zero" 而 "strcmp" 返回 "<0 , =0 or >0", 所以你可能找不到任何区别。
通常,这就足够了,因为我们不关心返回的确切值是什么,但是,如下所示:
回声 5 <=> 1; // 1
回声 strcmp(5,1); // 4
除了 1,0,-1 之外,我无法从宇宙飞船中获取其他值。