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 相关文章推荐
第八节 访问方式 [8]
Oct 09 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
PHP缓存集成库phpFastCache用法
Dec 15 PHP
Laravel 5框架学习之Blade 简介
Apr 08 PHP
php动态函数调用方法
May 21 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
Jun 13 PHP
php中strlen和mb_strlen用法实例分析
Nov 12 PHP
php+ajax实现仿百度查询下拉内容功能示例
Oct 20 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 PHP
PHP dirname(__FILE__)原理及用法解析
Oct 28 PHP
php 解析非标准json、非规范json
Apr 01 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数据库开发知多少
2006/10/09 PHP
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
用PHP代码在网页上生成图片
2015/07/01 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
JS SetInterval 代码实现页面轮询
2017/08/11 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
Python常用外部指令执行代码实例
2020/11/05 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
伊利莎白雅顿官网:Elizabeth Arden
2016/10/10 全球购物
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
耐克中国官方商城:Nike中国
2018/10/18 全球购物
2013的个人自我评价
2013/12/26 职场文书
运动会稿件50字
2014/02/17 职场文书
入党积极分子自我鉴定范文
2014/03/25 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
2014年教研组工作总结
2014/11/26 职场文书
护士实习自荐信
2015/03/06 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏