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+DBM的同学录程序(3)
Oct 09 PHP
php中常用编辑器推荐
Jan 02 PHP
php 传值赋值与引用赋值的区别
Dec 29 PHP
rrmdir php中递归删除目录及目录下的文件
May 15 PHP
PHP中的函数嵌套层数限制分析
Jun 13 PHP
php限制上传文件类型并保存上传文件的方法
Mar 13 PHP
php支持中文字符串分割的函数
May 28 PHP
php文件读取方法实例分析
Jun 20 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
PHP实现正则匹配所有括号中的内容
Jun 22 PHP
使用PHP开发留言板功能
Nov 19 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
Feb 07 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使用PDO连接ACCESS数据库
2015/03/05 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
javascript生成随机数的方法
2014/05/16 Javascript
JavaScript对象之深度克隆介绍
2014/12/08 Javascript
JavaScript 闭包机制详解及实例代码
2016/10/10 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
js时间控件只显示年月
2017/01/08 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
Python中字典和JSON互转操作实例
2015/01/19 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
车工岗位职责
2013/11/26 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
简历中个人自我评价分享
2014/03/15 职场文书
加入学生会演讲稿
2014/04/24 职场文书
学生安全责任书范本
2014/07/24 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
三好学生个人总结
2015/02/15 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
教师听课学习心得体会
2016/01/15 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL
分享Python获取本机IP地址的几种方法
2022/03/17 Python