如何利用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 相关文章推荐
PHPMailer邮件类利用smtp.163.com发送邮件方法
Sep 11 PHP
基于Windows下Apache PHP5.3.1安装教程
Jan 08 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
Oct 12 PHP
php中的动态调用实例分析
Jan 07 PHP
Nginx下配置codeigniter框架方法
Apr 07 PHP
PHP 反射(Reflection)使用实例
May 12 PHP
php实现简易聊天室应用代码
Sep 23 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
java解析json方法总结
May 16 PHP
在PHP中实现使用Guzzle执行POST和GET请求
Oct 15 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
Nov 23 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 xml留言板 xml存储数据的简单例子
2009/08/24 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
JsonServer安装及启动过程图解
2020/02/28 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
Form表单及django的form表单的补充
2019/07/25 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
2020/02/03 Python
Python基于内置库pytesseract实现图片验证码识别功能
2020/02/24 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
CSS3 Media Queries(响应式布局可以让你定制不同的分辨率和设备)
2013/06/06 HTML / CSS
css3 条纹化和透明化表格Firefox下测试成功
2014/04/15 HTML / CSS
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
夜大自我鉴定
2013/10/31 职场文书
税务专业毕业生自荐信
2013/11/10 职场文书
贷款委托书
2014/08/01 职场文书
地球一小时活动总结
2015/02/27 职场文书
《认识年月日》教学反思
2016/02/19 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python