php中array_multisort对多维数组排序的方法


Posted in PHP onJune 21, 2020

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中array_multisort对多维数组排序的方法。分享给大家供大家参考。具体实现方法如下:

function sort_array($array, $keyid, $order='asc', $type='number') {
 if(is_array($array)) {
 foreach($array as $val) {
  $order_arr[] = $val[$keyid];
 }
 $order = ($order == 'asc') ? SORT_ASC: SORT_DESC;
 $type = ($type == 'number') ? SORT_NUMERIC: SORT_STRING;
 array_multisort($order_arr, $order, $type, $array);
 }
}

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php判断字符以及字符串的包含方法属性
Aug 30 PHP
PHP中文分词 自动获取关键词介绍
Nov 13 PHP
php mail to 配置详解
Jan 16 PHP
PHP缓存机制Output Control详解
Jul 14 PHP
VPS中使用LNMP安装WordPress教程
Dec 28 PHP
图文介绍PHP添加Redis模块及连接
Jul 28 PHP
PHP实现的迷你漂流瓶
Jul 29 PHP
PHP数组操作简单案例分析
Oct 15 PHP
php变量与JS变量实现不通过跳转直接交互的方法
Aug 25 PHP
php使用curl获取header检测开启GZip压缩的方法
Aug 15 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
Sep 10 PHP
PHP 命名空间和自动加载原理与用法实例分析
Apr 29 PHP
php获取文件类型和文件信息的方法
Jul 10 #PHP
php中实现用数组妩媚地生成要执行的sql语句
Jul 10 #PHP
PHP中把对象数组转换成普通数组的方法
Jul 10 #PHP
codeigniter实现get分页的方法
Jul 10 #PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
Jul 10 #PHP
php基于Snoopy解析网页html的方法
Jul 09 #PHP
php生成固定长度纯数字编码的方法
Jul 09 #PHP
You might like
PHP中图片等比缩放的实例
2013/03/24 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
2016/11/25 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
SWFObject Flash js调用类
2008/07/08 Javascript
web前端开发也需要日志
2010/12/09 Javascript
Javascript window对象详解
2014/11/12 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
python控制台英汉汉英电子词典
2020/04/23 Python
Python多进程通信Queue、Pipe、Value、Array实例
2014/11/21 Python
Python列表append和+的区别浅析
2015/02/02 Python
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
python opencv之分水岭算法示例
2018/02/24 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
解决PySide+Python子线程更新UI线程的问题
2019/01/11 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
代码实例讲解python3的编码问题
2019/07/08 Python
python利用opencv实现SIFT特征提取与匹配
2020/03/05 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
六十大寿答谢词
2014/01/12 职场文书
二年级学生评语大全
2014/04/23 职场文书
好好学习保证书
2015/02/26 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏