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 相关文章推荐
excellent!――ASCII Art(由目标图象生成ascii)
Feb 20 PHP
用php实现批量查询清除一句话后门的代码
Jan 20 PHP
php生成随机密码的几种方法
Jan 17 PHP
php XPath对XML文件查找及修改实现代码
Jul 27 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
Jun 22 PHP
php访问数组最后一个元素的函数end()用法
Mar 18 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
PDO::quote讲解
Jan 29 PHP
PHP与SQL语句写一句话木马总结
Oct 11 PHP
PHP中关于php.ini参数优化详解
Feb 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
PHP 多进程 解决难题
2009/06/22 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
python处理PHP数组文本文件实例
2014/09/18 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
Python实现二维数组输出为图片
2018/04/03 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
python读取mysql数据绘制条形图
2020/03/25 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
建筑工程专业学生的自我评价
2013/12/25 职场文书
村干部培训方案
2014/05/02 职场文书
社区娱乐活动方案
2014/08/21 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
公司领导班子民主生活会对照检查材料
2014/10/02 职场文书
关于群众路线的心得体会
2014/11/05 职场文书
2014年学校工作总结
2014/11/20 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
小学教学工作总结2015
2015/05/13 职场文书
2016小学教师读书心得体会
2016/01/13 职场文书