有个需求,一个多维数组 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"
}
}