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&mysql(四)
Oct 09 PHP
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
Nov 18 PHP
php处理斐波那契数列非递归方法
Feb 04 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 PHP
nginx+php-fpm配置文件的组织结构介绍
Nov 07 PHP
php+js实现图片的上传、裁剪、预览、提交示例
Aug 27 PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 PHP
使用PHP实现生成HTML静态页面
Nov 18 PHP
基于thinkPHP框架实现留言板的方法
Oct 17 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
如何让PHP编码更加好看利于阅读
May 12 PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 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
MOTOROLA 摩托罗拉 MODEL 66-XI五灯中波收音机
2021/03/02 无线电
PHP中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
PHP简单读取xml文件的方法示例
2017/04/20 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
图片之间的切换
2006/06/26 Javascript
jQuery 获取对象 定位子对象
2010/05/31 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
2020/09/17 Javascript
python去除所有html标签的方法
2015/05/05 Python
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
打造经典复古风格的品牌:Alice + Olivia(爱丽丝+奥利维亚)
2016/09/07 全球购物
Raffaello Network德国:意大利拉斐尔时尚购物网
2019/05/01 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
大学生职业生涯规划书模板
2014/01/18 职场文书
见习期个人总结
2015/03/05 职场文书
小学工作总结2015
2015/05/04 职场文书
病假证明模板
2015/06/19 职场文书
2015中秋祝酒词
2015/08/12 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python