如何利用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 内存缓存加速功能memcached安装与用法
Sep 03 PHP
献给php初学者(入门学习经验谈)
Oct 12 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
php调用google接口生成二维码示例
Apr 28 PHP
php判断数组元素中是否存在某个字符串的方法
Jun 14 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
Dec 25 PHP
CI框架数据库查询之join用法分析
May 18 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 PHP
PHP receiveMail实现收邮件功能
Apr 25 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 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
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
PHP概率计算函数汇总
2015/09/13 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
快速搭建React的环境步骤详解
2017/11/06 Javascript
vue实现nav导航栏的方法
2017/12/13 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
Node.js assert断言原理与用法分析
2019/01/04 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
JavaScript实现音乐导航效果
2020/11/19 Javascript
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
python实现两张图片的像素融合
2019/02/23 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
python脚本实现mp4中的音频提取并保存在原目录
2020/02/27 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
上班睡觉检讨书
2014/01/09 职场文书
工程招投标邀请书
2014/01/26 职场文书
《只有一个地球》教学反思
2014/02/14 职场文书
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
2019最新劳动仲裁申请书!
2019/07/08 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书