如何利用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 从数据库提取二进制图片的处理代码
Sep 09 PHP
php编程实现获取excel文档内容的代码实例
Jun 28 PHP
php GUID生成函数和类
Mar 10 PHP
php使用session二维数组实例
Nov 06 PHP
php创建session的方法实例详解
Jan 27 PHP
php中smarty区域循环的方法
Jun 11 PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 PHP
PHP面向对象自动加载机制原理与用法分析
Oct 14 PHP
mac系统下安装多个php并自由切换的方法详解
Apr 21 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 PHP
PHP实现创建以太坊钱包转账等功能
Apr 21 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 stream_get_meta_data返回值
2013/09/29 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
location.href用法总结(最主要的)
2013/12/27 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
jQuery实现简单的点赞效果
2020/05/29 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
angular分页指令操作
2017/01/09 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
Vue基本使用之对象提供的属性功能
2019/04/30 Javascript
vue如何获取自定义元素属性参数值的方法
2019/05/14 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
简单易懂的python环境安装教程
2017/07/13 Python
python程序封装为win32服务的方法
2021/03/07 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
python爬取代理ip的示例
2020/12/18 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
泰国在线书店:SE-ED
2020/06/21 全球购物
建筑施工员岗位职责
2013/11/26 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
大学生实习证明范本
2014/09/19 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
学术研讨会主持词
2015/07/04 职场文书
会计做账心得体会
2016/01/22 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python