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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
php实现的简单压缩英文字符串的代码
Apr 24 PHP
PHP入门学习的几个不错的实例代码
Jul 13 PHP
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
Jul 24 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
PHP实现远程下载文件到本地
May 17 PHP
php动态绑定变量的用法
Jun 16 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
Jun 14 PHP
php面向对象基础详解【星际争霸游戏案例】
Jan 23 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中call_user_func_array()函数的用法演示
2012/02/05 PHP
php处理复杂xml数据示例
2016/07/11 PHP
详解php几行代码实现CSV格式文件输出
2017/07/01 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
深入理解PHP+Mysql分布式事务与解决方案
2020/12/03 PHP
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
2016/12/20 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
vue组件挂载到全局方法的示例代码
2018/08/02 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
Python程序设计入门(2)变量类型简介
2014/06/16 Python
Python实现自动发送邮件功能
2021/03/02 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
python3 中文乱码与默认编码格式设定方法
2018/10/31 Python
Django ImageFiled上传照片并显示的方法
2019/07/28 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
库存图片、照片、矢量图、视频和音乐:Shutterstock
2021/02/12 全球购物
青春励志演讲稿范文
2014/08/25 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
应聘教师自荐信
2015/03/26 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
加薪申请报告范本
2015/05/15 职场文书
员工给公司的建议书
2019/06/24 职场文书