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 相关文章推荐
phpmyadmin提示The mbstring extension is missing的解决方法
Dec 17 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
PHP的关于变量和日期处理的一些面试题目整理
Aug 10 PHP
PHP自定义错误用法示例
Sep 28 PHP
PhpStorm本地断点调试的方法步骤
May 21 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 PHP
PHP实现PDO操作mysql存储过程示例
Feb 13 PHP
详解PHP神奇又有用的Trait
Mar 25 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 PHP
PHP如何防止用户重复提交表单
Dec 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
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
JQuery 常用操作代码
2010/03/14 Javascript
JavaScript 比较时间大小的代码
2010/04/24 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
Javascript中的迭代、归并方法详解
2016/06/14 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
2020/03/31 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
深入解析Python中的__builtins__内建对象
2016/06/21 Python
python 使用get_argument获取url query参数
2017/04/28 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
2019/11/15 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
Django数据库操作之save与update的使用
2020/04/01 Python
python属于解释型语言么
2020/06/15 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
numba提升python运行速度的实例方法
2021/01/25 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
什么是Oracle的后台进程background processes?都有哪些后台进程?
2012/04/26 面试题
材料加工硕士生求职信
2013/10/10 职场文书
工作睡觉检讨书
2014/02/25 职场文书
党的群众路线教育实践活动个人自我剖析材料
2014/10/07 职场文书
销售员岗位职责
2015/02/10 职场文书
父母教会我观后感
2015/06/17 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
计算机教师工作总结
2015/08/13 职场文书