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 相关文章推荐
将OICQ数据转成MYSQL数据
Oct 09 PHP
php下intval()和(int)转换使用与区别
Jul 18 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
Aug 02 PHP
如何使用PHP实现javascript的escape和unescape函数
Jun 29 PHP
PHP中file_exists函数不支持中文名的解决方法
Jul 26 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
php发送短信验证码完成注册功能
Nov 24 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
May 03 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 PHP
php原生数据库分页的代码实例
Feb 18 PHP
laravel清除视图缓存的代码
Oct 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运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
jcrop基本参数一览
2013/07/16 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
基于JS实现限时抢购倒计时间表代码
2017/05/09 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
Python中使用装饰器来优化尾递归的示例
2016/06/18 Python
pygame游戏之旅 游戏中添加显示文字
2018/11/20 Python
详解python算法之冒泡排序
2019/03/05 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
2020/04/09 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
自主招生自荐信
2013/12/08 职场文书
员工年终演讲稿
2014/01/03 职场文书
夜不归宿检讨书
2014/02/25 职场文书
小学教学随笔感言
2014/02/26 职场文书
医疗纠纷协议书
2014/04/16 职场文书
合作协议书
2014/04/23 职场文书
教师师德演讲稿
2014/05/06 职场文书
领导班子四风对照检查材料
2014/09/23 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
社会实践活动报告
2015/02/05 职场文书
收入证明怎么写
2015/06/12 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书
施工安全协议书
2016/03/22 职场文书
Python基础之元编程知识总结
2021/05/23 Python
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript