如何利用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 网络开发详解之远程文件包含漏洞
Apr 25 PHP
php数组函数序列之array_combine() - 数组合并函数使用说明
Oct 29 PHP
PHP求小于1000的所有水仙花数的代码
Jan 10 PHP
给ECShop添加最新评论
Jan 07 PHP
thinkPHP学习笔记之安装配置篇
Mar 05 PHP
PHP实现的简单缓存类
Jul 29 PHP
详解PHP对象的串行化与反串行化
Jan 24 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
Nov 16 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
Apr 09 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的FTP学习(三)
2006/10/09 PHP
PHP伪静态写法附代码
2008/06/20 PHP
php printf输出格式使用说明
2010/12/05 PHP
PHP 循环删除无限分类子节点的实现代码
2013/06/21 PHP
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
2011/10/24 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
vue实现图片上传到后台
2020/06/29 Javascript
Python中的choice()方法使用详解
2015/05/15 Python
Python注释详解
2016/06/01 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
Python中常见的数制转换有哪些
2020/05/27 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
物流仓储计划书
2014/01/10 职场文书
运动会稿件50字
2014/02/17 职场文书
历史专业大学生职业生涯规划书
2014/03/13 职场文书
社保委托书怎么写
2014/08/02 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
党支部半年考察意见
2015/06/01 职场文书
运动会报道稿大全
2015/07/23 职场文书
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python