如何利用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&mysql(一)
Oct 09 PHP
解析php中eclipse 用空格替换 tab键
Jun 24 PHP
php selectradio和checkbox默认选择的实现方法详解
Jun 29 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
Aug 31 PHP
php中过滤非法字符的具体实现
Oct 29 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
thinkPHP模型初始化实例分析
Dec 03 PHP
WordPress中调试缩略图的相关PHP函数使用解析
Jan 07 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
Jul 28 PHP
PHP SFTP实现上传下载功能
Jul 26 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 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 高手之路(一)
2006/10/09 PHP
mysql5详细安装教程
2007/01/15 PHP
快速开发一个PHP扩展图文教程
2008/12/12 PHP
pdo中使用参数化查询sql
2011/08/11 PHP
PHP中Session引起的脚本阻塞问题解决办法
2014/04/08 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
php生成rss类用法实例
2015/04/14 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
浅析javascript 定时器
2014/12/23 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
react中使用css的7中方式(最全总结)
2019/02/11 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
零基础写python爬虫之神器正则表达式
2014/11/06 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
Python for循环与range函数的使用详解
2019/03/23 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
Python对wav文件的重采样实例
2020/02/25 Python
香港交友网站:be2香港
2018/07/22 全球购物
卡骆驰德国官方网站:Crocs德国
2019/03/29 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
《歌唱二小放牛郎》教学反思
2014/04/19 职场文书
工作目标责任书
2014/07/23 职场文书
迎新生标语大全
2014/10/06 职场文书
通知书大全
2015/04/27 职场文书
生日宴会祝酒词
2015/08/10 职场文书
母婴行业实体、电商模式全面解析
2019/08/01 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
导游词之青岛太清宫
2019/12/13 职场文书