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中iconv函数使用方法
May 24 PHP
php 提速工具eAccelerator 配置参数详解
May 16 PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 PHP
PHP 观察者模式的实现代码
May 10 PHP
smarty基础之拼接字符串的详解
Jun 18 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
php获取url参数方法总结
Nov 13 PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 PHP
PHP弱类型的安全问题详细总结
Sep 25 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
Oct 20 PHP
php抛出异常与捕捉特定类型的异常详解
Oct 26 PHP
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
Apr 01 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 syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
php中最简单的字符串匹配算法
2014/12/16 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
jQuery 学习第七课 扩展jQuery的功能 插件开发
2010/05/17 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
javascript实现简单加载随机色方块
2015/12/25 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
js实现九宫格抽奖
2020/03/19 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
python递归计算N!的方法
2015/05/05 Python
Win8下python3.5.1安装教程
2020/07/29 Python
python实现图片筛选程序
2018/10/24 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
Python操作qml对象过程详解
2019/09/26 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
美体小铺法国官方网站:The Body Shop法国
2020/06/04 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
给物业的表扬信
2014/01/21 职场文书
小学三八妇女节活动方案
2014/03/16 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
2016党校学习心得体会范文
2016/01/07 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
正则表达式拆分url实例代码
2022/02/24 Java/Android
Python实现数据的序列化操作详解
2022/07/07 Python