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的安全
Oct 09 PHP
资料注册后发信小技巧
Oct 09 PHP
PHP中动态HTML的输出技术
Oct 09 PHP
php获取、检查类名、函数名、方法名的函数方法
Jun 25 PHP
php判断linux下程序问题实例
Jul 09 PHP
php上传图片并压缩的实现方法
Dec 22 PHP
php分页查询的简单实现代码
Mar 14 PHP
PHP实现微信图片上传到服务器的方法示例
Jun 29 PHP
PHP7扩展开发教程之Hello World实现方法示例
Aug 03 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
Oct 21 PHP
在 Laravel 中动态隐藏 API 字段的方法
Oct 25 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 删除数组元素
2009/01/16 PHP
PHP正确配置mysql(apache环境)
2011/08/28 PHP
php访问数组最后一个元素的函数end()用法
2015/03/18 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
js验证是否为数字的总结
2013/04/14 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
Websocket协议详解及简单实例代码
2016/12/12 Javascript
浅谈Webpack打包优化技巧
2018/06/12 Javascript
详解基于Vue-cli搭建的项目如何和后台交互
2018/06/29 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
JS实现百度搜索框关键字推荐
2020/02/17 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
python实现一次创建多级目录的方法
2015/05/15 Python
Python 字典与字符串的互转实例
2017/01/13 Python
python 显示数组全部元素的方法
2018/04/19 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
2020/12/14 Python
《两个铁球同时着地》教学反思
2014/02/13 职场文书
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
一分钟演讲稿
2014/04/30 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
redis中lua脚本使用教程
2021/11/01 Redis
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python