php usort 的那个排序函数的返回值老是记不住返回1的时候是按升序还是降序排,网上搜了一大堆也没个能说明白的。 直到今天看到了一个说法。
所以我们只需要根据我们自定义函数返回的是-1 还是 1 来记,返回1,则表示usort函数会帮我们交换a和b 的位置。返回-1 则不交换 a和b 的位置。
$arr = [1,6,5,3,4,2];
//我们这里在 a < b 的时候返回1,表示我们希望a < b 的时候usort函数帮我们交换a,b ,交换后 a和b的大值就会出现在前面。从而达到降序排列数组的目的。
usort($arr, function ($a, $b) {
return $a < $b ? 1 : -1;
});
var_dump($arr);
array(6) {
[0]=>
int(6)
[1]=>
int(5)
[2]=>
int(4)
[3]=>
int(3)
[4]=>
int(2)
[5]=>
int(1)
}
$arr = [1,6,5,3,4,2];
//a小于b的时候返回-1,说明a<b的时候不需要交换。说明最后是按升序排序。
usort($arr, function ($a, $b) {
return $a < $b ? -1 : 1;
});
var_dump($arr);
array(6) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
}
$arr = [1,6,5,3,4,2];
//a > b返回-1,表示a>b 的时候不需要交换,a<b的时候才交换。所以最后的排序是降序。
usort($arr, function ($a, $b) {
return $a > $b ? -1 : 1;
});
var_dump($arr);
array(6) {
[0]=>
int(6)
[1]=>
int(5)
[2]=>
int(4)
[3]=>
int(3)
[4]=>
int(2)
[5]=>
int(1)
}
$arr = [1,6,5,3,4,2];
//a>b的时候返回1,表示a>b的时候要交换。所以最后就是俺升序排序了。
usort($arr, function ($a, $b) {
return $a > $b ? 1 : -1;
});
var_dump($arr);
array(6) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
}
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!