如何利用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 相关文章推荐
第十三节 对象串行化 [13]
Oct 09 PHP
解析PHP缓存函数的使用说明
May 10 PHP
判断php数组是否为索引数组的实现方法
Jun 13 PHP
PHP中soap的用法实例
Oct 24 PHP
php 在线导入mysql大数据程序
Jun 11 PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 PHP
通过php动态传数据到highcharts
Apr 05 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
详解PHP swoole process的使用方法
Aug 26 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 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学习之正则表达式
2011/04/17 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
2011/07/31 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
javascript中call和apply方法浅谈
2013/09/27 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
JS使用JSON作为参数实例分析
2016/06/23 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
微信小程序收货地址API兼容低版本解决方法
2019/05/18 Javascript
深入解析Python中的lambda表达式的用法
2015/08/28 Python
scrapy爬虫实例分享
2017/12/28 Python
python通过elixir包操作mysql数据库实例代码
2018/01/31 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
小学生优秀评语大全
2014/04/22 职场文书
大型会议策划方案
2014/05/17 职场文书
关于感恩的作文
2019/08/26 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
python如何正确使用yield
2021/05/21 Python
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript