如何利用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应用程序来获取Web服务器的状态信息
Oct 09 PHP
PHP教程 预定义变量
Oct 23 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
Feb 16 PHP
PHP中file_exists与is_file,is_dir的区别介绍
Sep 12 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
May 06 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
php+ajax 文件上传代码实例
Mar 18 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 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简单实现多语言切换的方法
2016/05/09 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
require.js的用法详解
2015/10/20 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
Html5 js实现手风琴效果
2020/04/17 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
Python中pygame安装方法图文详解
2015/11/11 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
Python实现基于POS算法的区块链
2018/08/07 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
六种酷炫Python运行进度条效果的实现代码
2020/07/17 Python
百联网上商城:i百联
2017/01/28 全球购物
为什么会有内存对齐
2016/10/10 面试题
营销与策划应届生求职信
2013/11/04 职场文书
教师学习培训邀请函
2014/02/04 职场文书
八一建军节感言
2014/02/28 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
信访工作汇报材料
2014/10/27 职场文书
离婚协议书格式
2015/01/26 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
Python IO文件管理的具体使用
2022/03/20 Python
mysql幻读详解实例以及解决办法
2022/06/16 MySQL
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers