如何利用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 相关文章推荐
解决中英文字符串长度问题函数
Jan 16 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
php检测useragent版本示例
Mar 24 PHP
php绘图之加载外部图片的方法
Jan 24 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
Dec 17 PHP
PHP实现的构造sql语句类实例
Feb 03 PHP
Yii2实现自定义独立验证器的方法
May 05 PHP
PHP递归算法的简单实例
Feb 28 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
May 06 PHP
PHP检测一个数组有没有定义的方法步骤
Jul 20 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
php封装实现钉钉机器人报警接口的示例代码
Aug 08 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
递归列出所有文件和目录
2006/10/09 PHP
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
PHP删除数组中指定下标的元素方法
2018/02/03 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
基于jquery的给文章加入关键字链接
2010/10/26 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
js输入框使用正则表达式校验输入内容的实例
2017/02/12 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
ztree实现权限横向显示功能
2017/05/20 Javascript
Form表单上传文件(type="file")的使用
2017/08/03 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
countUp.js实现数字动态变化效果
2019/10/17 Javascript
24行JavaScript代码实现Redux的方法实例
2019/11/17 Javascript
vue+elementUI实现简单日历功能
2020/09/24 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
Flask框架的学习指南之用户登录管理
2016/11/20 Python
python正则-re的用法详解
2019/07/28 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
Python如何读取文件中图片格式
2020/01/13 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
美国滑板店:Tactics
2020/11/08 全球购物
爱的奉献演讲稿
2014/09/10 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
个人先进事迹材料
2014/12/29 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS