php利用array_multisort()函数,根据某个字段对二维数组进行排序
当我们需要对数据进行排序,但又不好修改mysql查询条件的时候。我们可以利用array_multisort()来对多维数据进行排序!
首先我们先看看官方上的说明:
语法:
array_multisort(array1,sorting order, sorting type,array2,array3..)
是对多个数组或多维数组进行排序的函数。
array1 | 必需。规定输入的数组。 |
sorting order | 可选。规定排列顺序。可能的值: SORT_ASC - 默认。按升序排列 (A-Z)。 SORT_DESC - 按降序排列 (Z-A)。 |
sorting type | 可选。规定排序类型。可能的值: SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。 SORT_NUMERIC - 把每一项作为数字来处理。 SORT_STRING - 把每一项作为字符串来处理。 SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。 SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。 SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。 |
array2 | 可选。规定输入的数组。 |
array3 | 可选。规定输入的数组。 |
参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。
第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:
SORT_ASC - 默认,按升序排列。(A-Z)
SORT_DESC - 按降序排列。(Z-A)
随后可以指定排序的类型:
SORT_REGULAR - 默认。将每一项按常规顺序排列。
SORT_NUMERIC - 将每一项按数字顺序排列。
SORT_STRING - 将每一项按字母顺序排列
【案例】:
我们从数据库中查询出数据,时间是日期格式存储的。怎么利用array_multisort()函数来进行排序!
<?php // +------------------------------------------------------------------------------------------ // | 利用array_multisort,根据字段对二维数组进行排序 Author:xiaochuan 28126649@qq.com // +------------------------------------------------------------------------------------------ header("Content-Type:text/html;charset=utf-8"); # 比如下面这个数组是我们从数据库中查询出来的 $data = array( array('id' => 1 , 'name' => '用户1' , 'date' => '2016-10-16 10:00:00'), array('id' => 2 , 'name' => '用户2' , 'date' => '2016-10-11 10:00:00'), array('id' => 3 , 'name' => '用户3' , 'date' => '2016-10-05 10:00:00'), array('id' => 4 , 'name' => '用户4' , 'date' => '2016-10-05 10:00:00'), array('id' => 5 , 'name' => '用户5' , 'date' => '2016-10-23 10:00:00') ); # 我们转成时间戳。方便后面比较(如果查出已经是那就不用转换了) foreach ($data as $k=>$v){ $data[$k]['time'] = strtotime($v['date']); } # 把需要根据排序字段的值,放入一个数组中 foreach ($data as $k=>$v){ $id[$k] = $v['id']; $time[$k] = $v['time']; } # 按时间降序排序(time字段) //array_multisort($time,SORT_NUMERIC,SORT_DESC,$data); # 按时间降序排序(time字段) 再按ID降序排序 array_multisort($time,SORT_NUMERIC,SORT_DESC,$id,SORT_NUMERIC,SORT_DESC,$data); echo '<pre>'; print_r($data); echo '</pre>'; ?>
运行打印出如下数据:
Array ( [0] => Array ( [id] => 5 [name] => 用户5 [date] => 2016-10-23 10:00:00 [time] => 1477188000 ) [1] => Array ( [id] => 1 [name] => 用户1 [date] => 2016-10-16 10:00:00 [time] => 1476583200 ) [2] => Array ( [id] => 2 [name] => 用户2 [date] => 2016-10-11 10:00:00 [time] => 1476151200 ) [3] => Array ( [id] => 4 [name] => 用户4 [date] => 2016-10-05 10:00:00 [time] => 1475632800 ) [4] => Array ( [id] => 3 [name] => 用户3 [date] => 2016-10-05 10:00:00 [time] => 1475632800 ) )
转载请注明来源地址:小川编程 » https://www.youhutong.com/index.php/article/index/90.html
1、本站发布的内容仅限用于学习和研究目的.请勿用于商业或非法用途,下载后请24小时内删除。
2、本站所有内容均不能保证其完整性,不能接受请勿购买或下载,如需完整程序,请去其官方购买正版使用
3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。
4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意