PHP多维数组按指定字段排序usort自定义排序方法(或使用太空船操作符 <=> 进行比较,默认按升序排序)
有个需求,一个多维数组 $list,要求按‘sort’字段进行排序, $list数组数据格式如下:
array(12) {
[0]=>
array(10) {
["id"]=> "21005421"
["cnt"]=> "2"
["pv"]=> "651"
["uv"]=> "606"
["g_name"]=> string(51) "话费红包 10 元(支付宝话费立减金)ZM"
["order_rate"]=> "14.52%"
["sort"]=> "4"
}
[1]=>
array(10) {
["id"]=> "21005422"
["cnt"]=> "3"
["pv"]=> "651"
["uv"]=> "606"
["g_name"]=> string(51) "话费红包 10 元(支付宝话费立减金)ZM"
["order_rate"]=> "4.12%"
["sort"]=> "2"
}
[2]=>
array(10) {
["id"]=> "21005425"
["cnt"]=> "2"
["pv"]=> "651"
["uv"]=> "606"
["g_name"]=> string(51) "话费红包 10 元(支付宝话费立减金)ZM"
["order_rate"]=> "11.02%"
["sort"]=> "3"
}
}
可以用usort函数实现快速排序:
//按数组值大小升序排序 usort($list,function($a, $b) {return $a['sort'] - $b['sort']; // 升序排序 });
// 或使用太空船操作符 <=> 进行比较,默认按升序排序usort($data, function($a, $b) {
return $a['sort'] <=> $b['sort'];
});
执行后var_dump($list) 返回了预期的升序排序如下:
array(12) {
[0]=>
array(10) {
["id"]=> "21005422"
["cnt"]=> "3"
["pv"]=> "651"
["uv"]=> "606"
["g_name"]=> string(51) "话费红包 10 元(支付宝话费立减金)ZM"
["order_rate"]=> "4.12%"
["sort"]=> "2"
}
[1]=>
array(10) {
["id"]=> "21005425"
["cnt"]=> "2"
["pv"]=> "651"
["uv"]=> "606"
["g_name"]=> string(51) "话费红包 10 元(支付宝话费立减金)ZM"
["order_rate"]=> "11.02%"
["sort"]=> "3"
}
[2]=>
array(10) {
["id"]=> "21005421"
["cnt"]=> "2"
["pv"]=> "651"
["uv"]=> "606"
["g_name"]=> string(51) "话费红包 10 元(支付宝话费立减金)ZM"
["order_rate"]=> "14.52%"
["sort"]=> "4"
}
}