普通的二维数组按元素值大小排序
//某一个二维数组根据coins值的大小进行排序
//SORT_DESC 是倒叙 SORT_ASC正序(默认)
$res = array_column($win,'coins');
array_multisort($res,SORT_DESC,$win);
//按照多个字段依次排序
$is_top = $top_time = $sort_saless = $id = [];
foreach ($ready as $key => $row) {
$is_top[$key] = $row['is_top'];//是否置顶
$top_time[$key] = $row['top_time'];//置顶时间
$sort_saless[$key] = $row['sort_saless'];//销量
$id[$key] = $row['id'];
}
array_multisort($is_top, SORT_DESC, $top_time, SORT_DESC, $sort_saless, SORT_DESC, $id, SORT_DESC , $ready);
如果我们在查询数据的时候分页不好直接Limit出来,就可以先查出一个二维数组,然后用以下方法进行分页。
/**
* 数组排序分页
* @param $data 二维数组
* @param $str 排序字段
* @param string $sort 'desc、asc'
* @param int $page 页码
* @param int $pagenumber 每页数
* @return array
*/
function array_sort_page($data,$str,$sort='desc',$page=1,$pagenumber=30)
{
$last_names = array_column($data,$str);
if($sort == 'desc'){
array_multisort($last_names,SORT_DESC,$data);
}else{
array_multisort($last_names,SORT_ASC,$data);
}
$page = $page?:1;
$start = ($page-1)*$pagenumber;
$new_data = [];
for($i=$start;$i<$start+$pagenumber;$i++){
if(!empty($data[$i])){
$new_data[] = $data[$i];
}
}
return $new_data;
}