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面向对象全攻略 (九)访问类型
Sep 30 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
如何使用PHP批量去除文件UTF8 BOM信息
Aug 05 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
PHP与MYSQL中UTF8编码的中文排序实例
Oct 21 PHP
thinkphp配置连接数据库技巧
Dec 02 PHP
Smarty使用自定义资源的方法
Aug 08 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 PHP
PHP数据对象映射模式实例分析
Mar 29 PHP
php创建多级目录与级联删除文件的方法示例
Sep 12 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 13 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 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 SQL防注入代码集合
2008/04/25 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
php不使用copy()函数复制文件的方法
2015/03/13 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
php简单计算权重的方法示例【适合抽奖类应用】
2019/06/10 PHP
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
2014/05/14 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
javascript设计模式Constructor(构造器)模式
2016/08/19 Javascript
AngularJS select设置默认值的实现方法
2017/08/25 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
vue2中使用less简易教程
2018/03/27 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
详解Python_shutil模块
2019/03/15 Python
详解Python3 基本数据类型
2019/04/19 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
对django layer弹窗组件的使用详解
2019/08/31 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
爱游人:Travelliker
2017/09/05 全球购物
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
函数指针的定义是什么
2016/08/14 面试题
信息技术教学反思
2014/02/12 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
党员思想汇报材料
2014/12/19 职场文书
《飘》英文读后感五篇
2019/10/11 职场文书