如何利用php array_multisort函数 对数据库结果进行复杂排序


Posted in PHP onJune 08, 2013

首先讲一下需求:数据库中有4个字段分别是id,volume,edition,name. 要求对查询结果按照volume+edition从大到小排序。
下面将一下array_multisort函数
array_multisort() 可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。

关联(string)键名保持不变,但数字键名会被重新索引。

排序顺序标志:
SORT_ASC ? 按照上升顺序排序
SORT_DESC ? 按照下降顺序排序

排序类型标志:
SORT_REGULAR ? 将项目按照通常方法比较
SORT_NUMERIC ? 将项目按照数值比较
SORT_STRING ? 将项目按照字符串比较

每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效 ? 在此之前为默认值 SORT_ASC 和 SORT_REGULAR。

输入数组被当成一个表的列并以行来排序——这类似于 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。

本函数的参数结构有些不同寻常,但是非常灵活。第一个参数必须是一个数组。接下来的每个参数可以是数组或者是下面列出的排序标志。

这样我们现在有这样一组数据

// 这是一组从数据库查询出来的结果
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
//我们需要先做出一个volume+edition的数组来
foreach($data as $val){
     $arr[] = $val['volume'] + $val['edition']; 
}
// 将$arr根据降序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($arr, SORT_DESC, $data);

这样就实现了我们需要的功能
PHP 相关文章推荐
PHP语法速查表
Jan 02 PHP
PHP 数组基础知识小结
Aug 20 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
CI(CodeIgniter)框架配置
Jun 10 PHP
简单说说PHP优化那些事(经验分享)
Nov 27 PHP
PHP的文件操作与算法实现的面试题示例
Aug 10 PHP
PHP常用设计模式之委托设计模式
Feb 13 PHP
php redis实现对200w用户的即时推送
Mar 04 PHP
php+ajax实现异步上传文件或图片功能
Jul 18 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
Aug 01 PHP
PHP数据库编程之MySQL优化策略概述
Aug 16 PHP
基于php+MySql实现学生信息管理系统实例
Aug 04 PHP
php引用返回与取消引用的详解
Jun 08 #PHP
PHP stripos()函数及注意事项的分析
Jun 08 #PHP
php自动加载机制的深入分析
Jun 08 #PHP
深入理解curl类,可用于模拟get,post和curl下载
Jun 08 #PHP
coreseek 搜索英文的问题详解
Jun 08 #PHP
探讨如何在php168_cms中提取验证码
Jun 08 #PHP
如何使用php绘制在图片上的正余弦曲线
Jun 08 #PHP
You might like
用PHP制作静态网站的模板框架(二)
2006/10/09 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
浅谈js中的闭包
2015/03/16 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
跟老齐学Python之list和str比较
2014/09/20 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
使用Mixin设计模式进行Python编程的方法讲解
2016/06/21 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
2018/03/19 Python
Python 创建空的list,以及append用法讲解
2018/05/04 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
2019/01/19 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
Python的垃圾回收机制详解
2019/08/28 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
python中spy++的使用超详细教程
2021/01/29 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
区域销售经理职责
2013/12/22 职场文书
自我鉴定怎么写
2014/01/12 职场文书
员工安全承诺书
2014/05/22 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
大专生找工作自荐书
2014/06/10 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python