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读取RSS feed的代码
Aug 01 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
Jun 05 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
CodeIgniter中实现泛域名解析
Jul 19 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
PHP进程通信基础之信号
Feb 19 PHP
老生常谈PHP面向对象之注册表模式
May 26 PHP
php使用imagecopymerge()函数创建半透明水印
Jan 25 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
php和html的区别点详细总结
Sep 24 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
浅谈PHP之ThinkPHP框架使用详解
Jul 21 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
使用Zttp简化Guzzle 调用
2017/07/02 PHP
laravel自定义分页效果
2017/07/23 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
js 判断控件获得焦点的示例代码
2014/03/04 Javascript
自己封装的javascript事件队列函数版
2014/06/12 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
js clearInterval()方法的定义和用法
2015/11/11 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
使用Pycharm分段执行代码
2020/04/15 Python
Python如何把字典写入到CSV文件的方法示例
2020/08/23 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
HTML5学习笔记之html5与传统html区别
2016/01/06 HTML / CSS
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
django 认证类配置实现
2021/11/11 Python
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers