php usort 的那个排序函数的返回值老是记不住返回1的时候是按升序还是降序排,网上搜了一大堆也没个能说明白的。 直到今天看到了一个说法。
所以我们只需要根据我们自定义函数返回的是-1 还是 1 来记,返回1,则表示usort函数会帮我们交换b 的位置。返回-1 则不交换 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)
}