PHP 二维数组根据某个字段排序的具体实现


Posted in PHP onJune 03, 2014

本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。

要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。

遇到这个要求的时候就不是 ORDER BY 能解决的问题了。因此翻看 PHP 手册查找到了如下方法,做此笔记。

废话少说,奉上代码,清单如下:

<?php 
/** 
* 二维数组根据某个字段排序 
* 功能:按照用户的年龄倒序排序 
* @author ruxing.li 
*/ 
header('Content-Type:text/html;Charset=utf-8'); 
$arrUsers = array( 
array( 
'id' => 1, 
'name' => '张三', 
'age' => 25, 
), 
array( 
'id' => 2, 
'name' => '李四', 
'age' => 23, 
), 
array( 
'id' => 3, 
'name' => '王五', 
'age' => 40, 
), 
array( 
'id' => 4, 
'name' => '赵六', 
'age' => 31, 
), 
array( 
'id' => 5, 
'name' => '黄七', 
'age' => 20, 
), 
); 
$sort = array( 
'direction' => 'SORT_DESC', //排序顺序标志 SORT_DESC 降序;SORT_ASC 升序 
'field' => 'age', //排序字段 
); 
$arrSort = array(); 
foreach($arrUsers AS $uniqid => $row){ 
foreach($row AS $key=>$value){ 
$arrSort[$key][$uniqid] = $value; 
} 
} 
if($sort['direction']){ 
array_multisort($arrSort[$sort['field']], constant($sort['direction']), $arrUsers); 
} 
var_dump($arrUsers); 
/* 
输出结果: 
array (size=5) 
0 => 
array (size=3) 
'id' => int 5 
'name' => string '黄七' (length=6) 
'age' => int 20 
1 => 
array (size=3) 
'id' => int 2 
'name' => string '李四' (length=6) 
'age' => int 23 
2 => 
array (size=3) 
'id' => int 1 
'name' => string '张三' (length=6) 
'age' => int 25 
3 => 
array (size=3) 
'id' => int 4 
'name' => string '赵六' (length=6) 
'age' => int 31 
4 => 
array (size=3) 
'id' => int 3 
'name' => string '王五' (length=6) 
'age' => int 40 
*/
PHP 相关文章推荐
解决PHP超大文件下载,断点续传下载的方法详解
Jun 06 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
PHP实现CSV文件的导入和导出类
Mar 24 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
Feb 28 PHP
Laravel中的Auth模块详解
Aug 17 PHP
php使用环形链表解决约瑟夫问题完整示例
Aug 07 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
PHP7修改的函数
Mar 09 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 #PHP
PHP解决URL中文GBK乱码问题的两种方法
Jun 03 #PHP
php数组中包含中文的排序方法
Jun 03 #PHP
php实现文件下载实例分享
Jun 02 #PHP
php+js实现异步图片上传实例分享
Jun 02 #PHP
php实例分享之html转为rtf格式
Jun 02 #PHP
php 伪静态之IIS篇
Jun 02 #PHP
You might like
最小化数据传输――在客户端存储数据
2006/10/09 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
php error_log 函数的使用
2009/04/13 PHP
php将数据库导出成excel的方法
2010/05/07 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
那些年一起学习的PHP(一)
2012/03/21 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
Git命令之分支详解
2021/03/02 PHP
JQuery 常用操作代码
2010/03/14 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
js数组操作学习总结
2013/11/04 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
JavaScript获取键盘按键的键码(参照表)
2017/01/10 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
react基本安装与测试示例
2020/04/27 Javascript
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
[01:07:02]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第三场 2月26日
2021/03/11 DOTA
基于Python的接口测试框架实例
2016/11/04 Python
python读取视频流提取视频帧的两种方法
2020/10/22 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
Python日志器使用方法及原理解析
2020/09/27 Python
简单介绍Object类的功能、常用方法
2013/10/02 面试题
个人求职信范文
2014/05/24 职场文书
安全目标责任书
2014/07/22 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
MySQL普通表如何转换成分区表
2022/05/30 MySQL
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers