如何利用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文件下载类
Dec 06 PHP
人尽可用的Windows技巧小贴士之下篇
Mar 22 PHP
用php将任何格式视频转为flv的代码
Sep 03 PHP
php异常处理技术,顶级异常处理器
Jun 13 PHP
基于php冒泡排序算法的深入理解
Jun 09 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
ThinkPHP之getField详解
Jun 20 PHP
ThinkPHP控制器间实现相互调用的方法
Oct 31 PHP
php实现微信公众号无限群发
Oct 11 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
Mar 12 PHP
PHP 访问数据库配置通用方法(json)
May 20 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查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
php采用file_get_contents代替使用curl实例
2014/11/07 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
2015/03/27 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
解决npm管理员身份install时出现权限的问题
2018/03/16 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
python 正则式 概述及常用字符
2009/05/07 Python
深入Python函数编程的一些特性
2015/04/13 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
劳资员岗位职责
2013/11/11 职场文书
大学本科生的个人自我评价
2013/12/09 职场文书
大学生实习思想汇报
2014/01/12 职场文书
致标枪运动员广播稿
2014/02/06 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
老干部工作先进事迹
2014/08/17 职场文书
元旦趣味活动方案
2014/08/22 职场文书
个人工作表现评价材料
2014/09/21 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
论文评审意见
2015/06/05 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
Python+Appium实现自动抢微信红包
2021/05/21 Python