PHP使用array_multisort对多个数组或多维数组进行排序


Posted in PHP onDecember 16, 2014

PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。

关联(string)键名保持不变,但数字键名会被重新索引。
输入数组被当成一个表的列并以行来排序——这类似于 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。——这句话是理解此函数用法的关键。

第一个参数必须是一个数组。接下来的每个参数可以是数组或者是下面列出的排序标志。

排序顺序标志:
■SORT_ASC - 按照上升顺序排序
■SORT_DESC - 按照下降顺序排序

排序类型标志:
■SORT_REGULAR - 将项目按照通常方法比较
■SORT_NUMERIC - 将项目按照数值比较
■SORT_STRING - 将项目按照字符串比较

每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效 - 在此之前为默认值 SORT_ASC 和 SORT_REGULAR。

看看两个实际例子:

1、一次对多个数组进行排序:

 $num1 = array(3, 5, 4, 3);

 $num2 = array(27, 50, 44, 78);

 array_multisort($num1, SORT_ASC, $num2, SORT_DESC);

 

 print_r($num1);

 print_r($num2);

 //result: Array ( [0] => 3 [1] => 3 [2] => 4 [3] => 5 ) Array ( [0] => 78 [1] => 27 [2] => 44 [3] => 50 )

2、对多维数组(以二位数组为例)进行排序:

 $arr = array(

     '0' => array(

         'num1' => 3,

         'num2' => 27 

     ),

     '1' => array(

         'num1' => 5,

         'num2' => 50

     ),

     '2' => array(

         'num1' => 4,

         'num2' => 44

     ),

     '3' => array(

         'num1' => 3,

         'num2' => 78

     ) 

 );

 foreach ( $arr as $key => $row ){

     $num1[$key] = $row ['num1'];

     $num2[$key] = $row ['num2'];

 }

 array_multisort($num1, SORT_ASC, $num2, SORT_DESC, $arr);

 print_r($arr);

 //result:Array([0]=>Array([num1]=>3 [num2]=>78) [1]=>Array([num1]=>3 [num2]=>27) [2]=>Array([num1]=>4 [num2]=>44) [3]=>Array([num1]=>5 [num2]=>50))

总结:

这里的重点就是,先把要排序的key存到一个一维数组中,然后就可以使用array_multisort()这个函数,将数组按照key进行排序了,当然,这里的排序你完全可以不适用array_multisort()这个函数,仅仅通过foreach遍历也能达到这个效果,但是既然php开发者给我们提供了更好的办法,我们就可以省去不必要的麻烦了。

PHP 相关文章推荐
PHP与SQL注入攻击[二]
Apr 17 PHP
php下连接mssql2005的代码
Jan 17 PHP
yii框架中的Url生产问题小结
Jan 16 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
Aug 13 PHP
PHP中的替代语法简介
Aug 22 PHP
php单例模式示例分享
Feb 12 PHP
php创建无限级树型菜单
Nov 05 PHP
php利用header函数下载各种文件
Aug 24 PHP
php opendir()列出目录下所有文件的实例代码
Oct 02 PHP
PHP中OpenSSL加密问题整理
Dec 14 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
Mar 18 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 PHP
php使用ereg验证文件上传的方法
Dec 16 #PHP
PHP使用pcntl_fork实现多进程下载图片的方法
Dec 16 #PHP
php中最简单的字符串匹配算法
Dec 16 #PHP
PHP实现将科学计数法转换为原始数字字符串的方法
Dec 16 #PHP
php输出金字塔的2种实现方法
Dec 16 #PHP
smarty缓存用法分析
Dec 16 #PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 #PHP
You might like
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
Angularjs中UI Router全攻略
2016/01/29 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
2016/07/01 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
详解用webpack把我们的业务模块分开打包的方法
2017/07/20 Javascript
vue.js分页中单击页码更换页面内容的方法(配合spring springmvc)
2018/02/10 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
vue实现计步器功能
2019/11/01 Javascript
js 递归json树实现根据子id查父id的方法分析
2019/11/08 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
Python多线程编程简单介绍
2015/04/13 Python
python Django批量导入不重复数据
2016/03/25 Python
Python txt文件加入字典并查询的方法
2019/01/15 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
Pandas之排序函数sort_values()的实现
2019/07/09 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
波兰运动鞋网上商店:e-Sporting
2018/02/16 全球购物
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
美国折扣香水网站:The Perfume Spot
2020/12/12 全球购物
Linux文件系统类型
2012/09/16 面试题
数控技校生自我鉴定
2014/03/02 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
2015年班主任个人工作总结
2015/03/31 职场文书
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS