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 ‘
';
print_r($data);
echo ‘
‘;
?>
运行打印出如下数据: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
)
)
浏览器启用弹出窗口过滤功能,将无法跳转到下载页。在浏览器地址栏右边符号提示处点击允许就可以了!
郑重声明:
1、本站源码仅供个人学习研究和交流使用,请于下载后二十四小时内删除
2、本站大多资源来源于互联网、用户分享,仅供学习交流使用,本站不提供任何技术支持
3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。
4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意