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 相关文章推荐
第十一节--重载
Nov 16 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
PHP语法自动检查的Vim插件
Aug 11 PHP
php获取网站百度快照日期的方法
Jul 29 PHP
php+ajax 实现输入读取数据库显示匹配信息
Oct 08 PHP
php实现微信公众号无限群发
Oct 11 PHP
WordPress中用于更新伪静态规则的PHP代码实例讲解
Dec 18 PHP
PHP将字符串首字母大小写转换的实例
Jan 21 PHP
详解php中serialize()和unserialize()函数
Jul 08 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 30 PHP
PHP7 整型处理机制修改
Mar 09 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来检测proxy
2006/10/09 PHP
php分页代码学习示例分享
2014/02/20 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
JavaScript 创建对象
2009/07/17 Javascript
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
2017/09/25 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
JS中Object对象的原型概念基础
2018/01/29 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)的实现
2020/08/19 Javascript
可用于监控 mysql Master Slave 状态的python代码
2013/02/10 Python
python基础教程之分支、循环简单用法
2016/06/16 Python
Python两个内置函数 locals 和globals(学习笔记)
2016/08/28 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
2018/02/08 Python
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
如何客观的进行自我评价
2013/12/17 职场文书
办公室助理岗位职责
2013/12/25 职场文书
打架检讨书100字
2014/01/08 职场文书
父亲八十大寿答谢词
2014/01/23 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
学生会副主席竞选稿
2015/11/19 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android
Python中的 No Module named ***问题及解决
2022/07/23 Python