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 相关文章推荐
在线短消息收发的程序,不用数据库
Oct 09 PHP
php5数字型字符串加解密代码
Apr 24 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
Sep 30 PHP
php使用正则过滤js脚本代码实例
May 10 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
Dec 16 PHP
PHP邮箱验证示例教程
Jun 01 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
May 23 PHP
tp5(thinkPHP5)框架实现多数据库查询的方法
Jan 10 PHP
PHP删除字符串中非字母数字字符方法总结
Jan 20 PHP
PDO::prepare讲解
Jan 29 PHP
PHP进阶学习之垃圾回收机制详解
Jun 18 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 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读写文件的方法(生成HTML)
2006/11/27 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
JS中对数组元素进行增删改移的方法总结
2016/12/15 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
详解基于vue-cli3快速发布一个fullpage组件
2019/03/08 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
Python使用py2exe打包程序介绍
2014/11/20 Python
Python实现爬取逐浪小说的方法
2015/07/07 Python
深入解读Python解析XML的几种方式
2016/02/16 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
python装饰器深入学习
2018/04/06 Python
python简易远程控制单线程版
2018/06/20 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
django列表筛选功能的实现代码
2020/03/27 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
专门出售各种儿童读物的网站:Put Me In The Story
2016/08/07 全球购物
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
施工资料员的岗位职责
2013/12/22 职场文书
有创意的广告词
2014/03/18 职场文书
报效祖国演讲稿
2014/09/15 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
离婚纠纷代理词
2015/05/23 职场文书
幼儿园语言教学反思
2016/02/23 职场文书
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python