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 相关文章推荐
图书管理程序(一)
Oct 09 PHP
php 信息采集程序代码
Mar 17 PHP
PHP 简单数组排序实现代码
Aug 05 PHP
利用php+mysql来做一个功能强大的在线计算器
Oct 12 PHP
微信公众平台接口开发入门示例
Dec 24 PHP
Codeigniter校验ip地址的方法
Mar 21 PHP
PHP封装的Twitter访问类实例
Jul 18 PHP
ThinkPHP表单数据智能写入create方法实例分析
Sep 27 PHP
php实现微信公众号主动推送消息
Dec 31 PHP
PHP连接MySQL进行增、删、改、查操作
Feb 19 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
Dec 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.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
js实现div在页面拖动效果
2016/05/04 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
小程序实现上下切换位置
2020/11/16 Javascript
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
[01:06]DOTA2隆重推出2016冬季勇士令状 内含上海特级锦标赛互动指南
2016/02/17 DOTA
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
Python3基础之输入和输出实例分析
2014/08/18 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
CSS3教程(4):网页边框和网页文字阴影
2009/04/02 HTML / CSS
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
JDO的含义
2012/11/17 面试题
小学毕业感言150字
2014/02/05 职场文书
战友聚会主持词
2014/04/02 职场文书
烈士陵园观后感
2015/06/08 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
为Java项目添加Redis缓存的方法
2021/05/18 Redis