如何利用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中动态HTML的输出技术
Oct 09 PHP
第五章 php数组操作
Dec 30 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
php中通过curl检测页面是否被百度收录
Sep 27 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
Mar 19 PHP
php验证邮箱和ip地址最简单方法汇总
Oct 30 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
PHP读取大文件的多种方法介绍
Apr 04 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
YII框架实现自定义第三方扩展操作示例
Apr 26 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
PHP数组实例详解
2016/06/26 PHP
PHP PDOStatement::execute讲解
2019/01/31 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
jQuery ready()和onload的加载耗时分析
2016/09/08 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
Vue-CLI与Vuex使用方法实例分析
2020/01/06 Javascript
vue组件系列之TagsInput详解
2020/05/14 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Matplotlib配色之Colormap详解
2021/01/05 Python
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
幼儿园大班新学期寄语
2014/01/18 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
交通事故案件代理词
2015/05/23 职场文书
国王的演讲观后感
2015/06/03 职场文书
大学生社会实践感想
2015/08/11 职场文书
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers