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 相关文章推荐
超强分页类2.0发布,支持自定义风格,默认4种显示模式
Jan 02 PHP
php自动获取目录下的模板的代码
Aug 08 PHP
PHP程序开发范例学习之表单 获取文本框的值
Aug 08 PHP
PHP转换IP地址到真实地址的方法详解
Jun 09 PHP
php class中public,private,protected的区别以及实例分析
Jun 18 PHP
php 地区分类排序算法
Jul 01 PHP
PHP解码unicode编码的中文字符代码分享
Aug 13 PHP
php中将一个对象保存到Session中的方法
Mar 13 PHP
php动态生成版权所有信息的方法
Mar 24 PHP
PHP实现清除wordpress里恶意代码
Oct 21 PHP
PHP树-不需要递归的实现方法
Jun 21 PHP
PHP面向对象之里氏替换原则简单示例
Apr 08 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二分法在IP地址查询中的应用
2008/08/12 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
Node.js实现JS文件合并小工具
2016/02/02 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
Django 视图层(view)的使用
2018/11/09 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
中专自我鉴定范文
2013/10/16 职场文书
大学生优秀自荐信范文
2014/02/25 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
毕业纪念册寄语大全
2015/02/26 职场文书
先进个人自荐书
2015/03/06 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
2015年组织部工作总结
2015/04/03 职场文书
体育教师研修感悟
2015/11/18 职场文书
2016入党培训心得体会范文
2016/01/08 职场文书
mysql部分操作
2021/04/05 MySQL
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android