您现在的位置是:网站首页> 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分组查询取最新的一条记录

下一篇: 这已经是最后一篇了!
亦然

亦然(共32篇文章)

愿你我既可以朝九晚五,也可以浪迹天涯;愿你我既可以拈花把酒,也能围炉诗书茶。