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 相关文章推荐
ADODB类使用
Nov 25 PHP
用PHP实现Ftp用户的在线管理的代码
Mar 06 PHP
Discuz Uchome ajaxpost小技巧
Jan 04 PHP
PHP管理内存函数 memory_get_usage()使用介绍
Sep 23 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
Jun 26 PHP
thinkphp实现图片上传功能分享
Mar 04 PHP
php eval函数一句话木马代码
May 21 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
Jun 29 PHP
YII框架http缓存操作示例
Apr 29 PHP
PHP 实现 JSON 数据的编码和解码操作详解
Apr 22 PHP
PHP RabbitMQ消息列队
May 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微信公众平台开发类实例
2015/04/01 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
jquery限制输入字数,并提示剩余字数实现代码
2012/12/24 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
jQuery中focus事件用法实例
2014/12/26 Javascript
对Angular.js Controller如何进行单元测试
2016/10/25 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
解决paramiko执行命令超时的问题
2020/04/16 Python
HTML5 语音搜索(淘宝店语音搜素)
2013/01/03 HTML / CSS
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
韩语专业本科生求职信
2013/10/01 职场文书
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
优秀班主任材料
2014/12/16 职场文书
长城导游词300字
2015/01/30 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
JVM之方法返回地址详解
2022/02/28 Java/Android
Go获取两个时区的时间差
2022/04/20 Golang