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脚本加密专家php解密算法
Sep 13 PHP
PHP如何抛出异常处理错误
Mar 02 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 PHP
php json与xml序列化/反序列化
Oct 28 PHP
php堆排序(heapsort)练习
Nov 13 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
php生成数字字母的验证码图片
Jul 14 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
php版微信自定义回复功能示例
Dec 05 PHP
Laravel5.7 Eloquent ORM快速入门详解
Apr 12 PHP
详解Laravel设置多态关系模型别名的方式
Oct 17 PHP
设定php简写功能的方法
Nov 28 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
javascript 写类方式之七
2009/07/05 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
2017/06/01 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
从零学Python之入门(三)序列
2014/05/25 Python
基于Python的XSS测试工具XSStrike使用方法
2017/07/29 Python
详解Python异常处理中的Finally else的功能
2017/12/29 Python
python实现机器学习之多元线性回归
2018/09/06 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
实习护理工作自我评价
2013/09/25 职场文书
农民致富事迹材料
2014/01/23 职场文书
技能竞赛活动方案
2014/02/21 职场文书
财务会计自荐信范文
2014/02/21 职场文书
董事长秘书工作职责
2014/06/10 职场文书
职工小家建设活动方案
2014/08/25 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
公司禁烟通知
2015/04/23 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
SpringBoot整合Minio文件存储
2022/04/03 Java/Android