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里的JS打印函数
Oct 09 PHP
通用PHP动态生成静态HTML网页的代码
Mar 04 PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
Jun 24 PHP
PHP字符串长度计算 - strlen()函数使用介绍
Oct 15 PHP
一组PHP加密解密函数分享
Jun 05 PHP
php将文本文件转换csv输出的方法
Dec 31 PHP
CI分页类首页、尾页不显示的解决方法
Mar 28 PHP
php 根据自增id创建唯一编号类
Apr 06 PHP
php简单处理XML数据的方法示例
May 19 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
Apr 03 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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 项目的方法
2007/01/02 PHP
第六章 php目录与文件操作
2011/12/30 PHP
php学习之function的用法
2012/07/14 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
flash 得到自身url参数的代码
2009/11/15 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
2019/10/11 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
PHP面试题大全
2015/10/16 面试题
Java面试题及答案
2012/09/08 面试题
银行实习自我鉴定
2013/10/12 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
学校少先队工作总结
2015/08/12 职场文书
Pytorch中的学习率衰减及其用法详解
2021/06/05 Python
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS
一文解答什么是MySQL的回表
2022/08/05 MySQL