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中的cookie
Nov 26 PHP
将一维或多维的数组连接成一个字符串的php代码
Aug 08 PHP
php函数之子字符串替换 str_replace
Mar 23 PHP
PHP中Date()时间日期函数的使用方法小结
Apr 20 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
PHP闭包(Closure)使用详解
May 02 PHP
关于crontab的使用详解
Jun 24 PHP
php获取淘宝分类id示例
Jan 16 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
Jul 29 PHP
PHP 二维数组和三维数组的过滤
Mar 16 PHP
手把手编写PHP框架 深入了解MVC运行流程
Sep 19 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 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 COOKIE及时生效的方法介绍
2014/02/14 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
2015/04/12 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
Node.js使用supervisor进行开发中调试的方法
2019/03/26 Javascript
用Python实现一个简单的线程池
2015/04/07 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
python中最小二乘法详细讲解
2021/02/19 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
英国独特家具和家庭用品购物网站:Cuckooland
2020/08/30 全球购物
linux系统都有哪些运行级别
2016/03/26 面试题
幼儿园园长岗位职责
2013/11/26 职场文书
告诉你怎样写创业计划书
2014/01/27 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
甲午大海战观后感
2015/06/02 职场文书
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技