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 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
php 中文字符串首字母的获取函数分享
Nov 04 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
Apr 24 PHP
CI框架自动加载session出现报错的解决办法
Jun 17 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
Aug 21 PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 PHP
php基于mcrypt的加密解密实例
Oct 27 PHP
php中get_meta_tags()、CURL与user-agent用法分析
Dec 16 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
Jan 15 PHP
Swoole实现异步投递task任务案例详解
Apr 02 PHP
laravel异步监控定时调度器实例详解
Jun 21 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源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
解析php防止form重复提交的方法
2013/07/01 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
laravel框架实现去掉URL中index.php的方法
2019/10/12 PHP
jquery cookie插件代码类
2009/05/26 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
10个经典的网页鼠标特效代码
2018/01/09 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
2020/04/07 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
微信小程序 接入腾讯地图的两种写法
2021/01/12 Javascript
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
Python学习笔记之函数的定义和作用域实例详解
2019/08/13 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
Cpython解释器中的GIL全局解释器锁
2020/11/09 Python
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
介绍java中初始化块的使用
2012/09/11 面试题
求两个数的乘积和商数,该作用由宏定义来实现
2013/03/13 面试题
历史系毕业生自荐信
2013/10/28 职场文书
会计自我鉴定
2014/02/04 职场文书
企业法人授权委托书
2014/04/03 职场文书
出国英文推荐信
2014/05/10 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
暑期社会实践证明书
2014/11/17 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
居住证明范文
2015/06/17 职场文书