PHP 二维数组 排序 分页

普通的二维数组按元素值大小排序

//某一个二维数组根据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;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值