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持久连接mysql_pconnect()函数使用介绍
Feb 05 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
Jun 28 PHP
PHP将XML转数组过程详解
Nov 13 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
Aug 20 PHP
ThinkPHP多语言支持与多模板支持概述
Aug 22 PHP
初识PHP
Sep 28 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
分享一个漂亮的php验证码类
Sep 29 PHP
详解PHP PDO简单教程
May 28 PHP
PHP+redis实现微博的拉模型案例详解
Jul 10 PHP
php中对象引用和复制实例分析
Aug 14 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
Mar 23 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
PHP学习之PHP表达式
2006/10/09 PHP
php 生成静态页面的办法与实现代码详细版
2010/02/15 PHP
解析PHP缓存函数的使用说明
2013/05/10 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
JS 操作符整理[推荐收藏]
2011/11/15 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
javascript中 try catch用法
2015/08/16 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
Vue如何实现组件的源码解析
2017/06/08 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
vue.js打包之后可能会遇到的坑!
2018/06/03 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
python统计日志ip访问数的方法
2015/07/06 Python
深入解答关于Python的11道基本面试题
2017/04/01 Python
Python实现的概率分布运算操作示例
2017/08/14 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
客户表扬信范文
2014/01/10 职场文书
大学生村官承诺书
2014/03/28 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
python随机打印成绩排名表
2021/06/23 Python
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏