如何利用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 相关文章推荐
ftp类(myftp.php)
Oct 09 PHP
PHP 和 MySQL 基础教程(二)
Oct 09 PHP
PHP_MySQL教程-第一天
Mar 18 PHP
php 图片上传类代码
Jul 17 PHP
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
如何使用php输出时间格式
Aug 31 PHP
体育彩票排列三组选三算法分享
Mar 07 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
Oct 20 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
PHP变量赋值、代入给JavaScript中的变量
Jun 29 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
PHP parse_ini_file函数的应用与扩展操作示例
Jan 07 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中通过加号合并数组的一个简单方法分享
2011/01/27 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
php调整服务器时间的方法
2015/04/03 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
jQuery EasyUI API 中文文档 - Form表单
2011/10/06 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
使用JavaScript获取电池状态的方法
2014/05/03 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
js实现仿购物车加减效果
2017/03/01 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
Python fileinput模块使用介绍
2014/11/30 Python
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
python连接mysql实例分享
2016/10/09 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
Django框架设置cookies与获取cookies操作详解
2019/05/27 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
超市仓管员岗位职责
2014/04/07 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
离婚被告答辩状
2015/05/22 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers