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 相关文章推荐
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
Mar 15 PHP
提高define性能的php扩展hidef的安装和使用
Jun 14 PHP
php empty() 检查一个变量是否为空
Nov 10 PHP
解析php中call_user_func_array的作用
Jun 07 PHP
php中get_meta_tags()、CURL与user-agent用法分析
Dec 16 PHP
php实现图片局部打马赛克的方法
Feb 11 PHP
php通过array_shift()函数移除数组第一个元素的方法
Mar 18 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
php生成二维码不保存服务器还有下载功能的实现代码
Aug 09 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 PHP
Swoole源码中如何查询Websocket的连接问题详解
Aug 30 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 文件夹删除、php清除缓存程序
2009/08/25 PHP
PHP 获取目录下的图片并随机显示的代码
2009/12/28 PHP
PHP取余函数介绍MOD(x,y)与x%y
2014/05/15 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
2016/07/14 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
使用jQuery实现更改默认alert框体
2015/04/13 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
2016/06/06 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
Vue axios获取token临时令牌封装案例
2020/09/11 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
python怎么提高计算速度
2020/06/11 Python
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
销售部主管岗位职责
2013/12/18 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
招标保密承诺书
2015/01/20 职场文书
少年雷锋观后感
2015/06/10 职场文书
国富论读书笔记
2015/06/26 职场文书
python如何进行基准测试
2021/04/26 Python