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 相关文章推荐
PHP4 与 MySQL 数据库操作函数详解
Oct 09 PHP
PHP 常用函数库和一些实用小技巧
Jan 01 PHP
PHP 采集程序原理分析篇
Mar 05 PHP
PHP zlib扩展实现页面GZIP压缩输出
Jun 17 PHP
php学习之 数组声明
Jun 09 PHP
php实现文件下载代码分享
Aug 19 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
Sep 09 PHP
php比较相似字符串的方法
Jun 05 PHP
Thinkphp整合微信支付功能
Dec 14 PHP
替换php字符串中的单引号为双引号的方法
Feb 16 PHP
php获取数据库中数据的实现方法
Jun 01 PHP
laravel migrate初学常见错误的解决方法
Oct 11 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将两个关联数组合并函数提高函数效率
2014/03/18 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
PHP创建word文档的方法(平台无关)
2016/03/29 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
2019/04/12 PHP
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
2021/01/30 Vue.js
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
python 图片去噪的方法示例
2019/07/09 Python
Python Web框架之Django框架Model基础详解
2019/08/16 Python
pycharm配置安装autopep8自动规范代码的实现
2021/03/02 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
成人大专生实习期的自我评价
2013/10/02 职场文书
信息管理专业推荐信
2013/10/29 职场文书
纪念建党演讲稿范文
2014/01/13 职场文书
《石榴》教学反思
2014/03/02 职场文书
低碳环保倡议书
2014/04/14 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
校园新闻稿范文
2015/07/18 职场文书
《青山不老》教学反思
2016/02/22 职场文书
mysql 生成连续日期及变量赋值
2022/03/20 MySQL
把77A收信机改造成收音机
2022/04/05 无线电