这是一段为数组值从小到大进行排序的代码,该函数的比较算法比较稳定,所谓稳定是指两个值相等的时候,不改变排序顺序。
具体代码如下:
$array = [4,1,2,3,10,17,5,33,24,18];
uasort($array, function($a, $b){
return $a<=>$b;
});
var_dump($array);这段代码精妙点在于:
uasort 函数的使用
uasort 的比较算法在 8.0 版本稳定了下来。具体说明可以看 https://www.php.net/manual/zh/function.uasort.php
ps 主要是看这句:在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。
然后太空船比较符正好返回了这三个整数。
匿名函数的使用
不知道说啥好了,反正省了行数吧
增加了php7新技巧:太空船比较 $a<=>$b
代码可以转化为:if($a > $b) { return 1; } elseif ($a == $b) { return 0; } else { return -1; }
所以开头的代码完整转化成能看得懂的代码就是:
$array = [4,1,2,3,10,17,5,33,24,18];
function jisuan($a, $b) {
if($a > $b) {
return 1;
} elseif ($a == $b) {
return 0;
} else {
return -1;
}
}
uasort($array, 'jisuan');
var_dump($array);
评论