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数组
Oct 09 PHP
PHP与MySQL开发中页面乱码的产生与解决
Mar 27 PHP
ajax 的post方法实例(带循环)
Jul 04 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
php开发微信支付获取用户地址
Oct 04 PHP
php实现Session存储到Redis
Nov 11 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
Dec 31 PHP
CodeIgniter生成静态页的方法
May 17 PHP
php实现统计二进制中1的个数算法示例
Jan 23 PHP
PHP实现通过strace定位故障原因的方法
Apr 29 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
Apr 03 PHP
PHP+mysql防止SQL注入的方法小结
Apr 27 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防止sql注入代码实例
2013/12/18 PHP
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
python安装以及IDE的配置教程
2015/04/29 Python
python中黄金分割法实现方法
2015/05/06 Python
python实现用于测试网站访问速率的方法
2015/05/26 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
Python的高阶函数用法实例分析
2019/04/11 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
五好关工委申报材料
2014/05/31 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
党员自我评价2015
2015/03/03 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
mysql多表查询-笔记七
2021/04/05 MySQL
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers