如何利用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中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 PHP
PHP中获取时间的下一周下个月的方法
Mar 18 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 PHP
Laravel 5框架学习之Blade 简介
Apr 08 PHP
YII Framework框架教程之日志用法详解
Mar 14 PHP
php生成二维码图片方法汇总
Dec 17 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
老生常谈PHP面向对象之命令模式(必看篇)
May 24 PHP
PHP实现创建微信自定义菜单的方法示例
Jul 14 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
php去除数组中为0的元素的实例分析
Nov 17 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/05/07 PHP
PHP闭包实例解析
2014/09/08 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
ES6新增的math,Number方法
2017/08/06 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
layui字体图标 loading图标静止不旋转的解决方法
2019/09/23 Javascript
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
Python3.7 pyodbc完美配置访问access数据库
2019/10/03 Python
如何基于Python批量下载音乐
2019/11/11 Python
通过实例解析Python调用json模块
2019/12/11 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
Python request post上传文件常见要点
2020/11/20 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
事业单位公务员的职业生涯规划
2014/01/15 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
毕业评语大全
2014/05/04 职场文书
关于感恩的演讲稿400字
2014/08/26 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
平安家庭事迹材料
2014/12/20 职场文书
JavaScript实现复选框全选功能
2021/04/11 Javascript
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS
PHP获取学生成绩的方法
2021/11/17 PHP
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers