您现在的位置是:网站首页> php专栏 常见问题
php实现数组根据指定字段排序并分页
亦然2019-10-28 16:21:39【常见问题】人已围观
简介常见问题,对一个二维数组或多维数组排序,再对排序好的数据分页下发。
在日常工作中,数据不一定是直接查询数据库,所以经常会遇到对数组的排序和分页操作,在这里记录一下。
一:数值排序
我常常用到的就是合并两个数组,然后根据某一列对这个数组排序,在php中使用array_multisort()函数来根据指定列排序数组。
array_multisort(array1,sorting order,sorting type,array2,array3...)参数说明:
tp5举例说明:合并两个数值,根据时间排序数组。
$user_order = array( array( 'pay_time' => '2019-10-11 10:05:47', 'buy_name' => '29元流量卡套餐', ), array( 'pay_time' => '2019-10-11 14:17:02', 'buy_name' => '29元流量卡套餐', ) ); $user_order2 = array( array( 'pay_time' => '2019-10-18 20:17:29', 'buy_name' => '20G加餐包', ), array( 'pay_time' => '2019-10-18 21:25:00', 'buy_name' => '20G加餐包', ) ); //合并数组 $all_order = array_merge($user_order,$user_order2); //二维数据根据字段排序 $last_names = array_column($all_order,'pay_time'); array_multisort($last_names,SORT_DESC,$all_order); dump($all_order);die;
结果如下:

二:数组分页
数组分页要用到的函数是array_slice(),意思是从数组中截取一段,它有三个参数,分别是原数组,开始截取下标,要取的数量。
参数说明:

tp5举例说明:
前台传对应的页码和行数,后台根据页数和行数计算对应的开始和截至数据。
$count = count($all_order); $start = ($page-1)*$limit;//偏移量,当前页-1乘以每页显示条数 $info = array_slice($all_order,$start,$limit); return json(['code'=>1,'msg'=>'订购记录下发成功!','page' => $page, 'pagecount' => ceil($count / $limit), 'limit' => $limit, 'total' => $count,'list'=>$info]);结果:

很赞哦!()
上一篇:tp5分组查询取最新的一条记录
下一篇:php常见面试题(一)