What is <=> (the 'Spaceship' Operator) in PHP 7?
PHP会出来7,其中今年将在十一月的spaceship介绍(< = >)操作员。它是什么和如何做这项工作?
<字幕>这个问题已经有一个答案在我们的一般问题关于PHP参考<字幕> /算子。
该
1 2 3 | Return 0 if values on either side are equal Return 1 if value on the left is greater Return -1 if the value on the right is greater |
组合比较运算符使用的规则与php viz当前使用的比较运算符相同。
1 2 3 4 5 6 7 8 9 10 11 | //Comparing Integers echo 1 <=> 1; //ouputs 0 echo 3 <=> 4; //outputs -1 echo 4 <=> 3; //outputs 1 //String Comparison echo"x" <=>"x"; // 0 echo"x" <=>"y"; //-1 echo"y" <=>"x"; //1 |
根据引入运营商的RFC,
- 0如果
$a == $b 。 - -1如果是
$a < $b 。 - 1如果
$a > $b 。
在我尝试过的每一种情况下,实际情况似乎都是如此,尽管严格地说,官方文件只提供了一个略弱的保证,即
an integer less than, equal to, or greater than zero when
$a is respectively less than, equal to, or greater than$b
不管怎样,你为什么要这样的接线员?同样,RFC解决了这一问题——它几乎完全是为了更方便地为
an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.
宇宙飞船操作员使这一点简洁方便:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $things = [ [ 'foo' => 5.5, 'bar' => 'abc' ], [ 'foo' => 7.7, 'bar' => 'xyz' ], [ 'foo' => 2.2, 'bar' => 'efg' ] ]; // Sort $things by 'foo' property, ascending usort($things, function ($a, $b) { return $a['foo'] <=> $b['foo']; }); // Sort $things by 'bar' property, descending usort($things, function ($a, $b) { return $b['bar'] <=> $a['bar']; }); |
使用宇宙飞船操作员编写的比较函数的更多例子可以在RFC的有用性部分找到。
它是用于组合比较的新运算符。在行为上类似于
单击此处了解更多信息