如何利用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在XP下IIS和Apache2服务器上的安装
Sep 05 PHP
PHP 向右侧拉菜单实现代码,测试使用中
Nov 03 PHP
php中一个有意思的日期逻辑处理
Mar 25 PHP
Yii分页用法实例详解
Dec 04 PHP
php简单防盗链实现方法
Jul 29 PHP
php经典算法集锦
Nov 14 PHP
如何写php守护进程(Daemon)
Dec 30 PHP
PHP中快速生成随机密码的几种方式
Apr 17 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
May 09 PHP
PHP 计算两个时间段之间交集的天数示例
Oct 24 PHP
php封装的page分页类完整实例代码
Feb 01 PHP
PHP优化之批量操作MySQL实例分析
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生成缩略图的函数代码(修改版)
2011/01/18 PHP
PHP常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
2014/06/06 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
Javascript 6里的4个新语法
2016/08/25 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
详解nodeJS中读写文件方法的区别
2017/03/06 NodeJs
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
深入理解Vue 的钩子函数
2018/09/05 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
js回调函数仿360开机
2019/12/26 Javascript
[14:03]2017DOTA2亚洲邀请赛开幕式:12神兵演绎水墨中华
2017/04/01 DOTA
Python Tkinter简单布局实例教程
2014/09/03 Python
Python获取服务器信息的最简单实现方法
2015/03/05 Python
Python for Informatics 第11章之正则表达式(二)
2016/04/21 Python
Python开发的实用计算器完整实例
2017/05/10 Python
python 文件查找及内容匹配方法
2018/10/25 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
Python通用循环的构造方法实例分析
2018/12/19 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
2019/12/11 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
预备党员表决心书
2014/03/11 职场文书
培训班通知
2015/04/25 职场文书
叶问观后感
2015/06/15 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
python 进阶学习之python装饰器小结
2021/09/04 Python