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生成HTML静态页面实例代码
Aug 31 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
Feb 04 PHP
php批量更改数据库表前缀实现方法
Oct 26 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
php中fgetcsv()函数用法实例
Nov 28 PHP
对PHP PDO的一些认识小结
Jan 23 PHP
php列出mysql表所有行和列的方法
Mar 13 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
php比较两个字符串长度的方法
Jul 13 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
CI框架中redis缓存相关操作文件示例代码
May 17 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 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
php7新特性的理解和比较总结
2019/04/14 PHP
YII2框架中查询生成器Query()的使用方法示例
2020/03/18 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
JavaScript动态添加事件之事件委托
2016/07/12 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
2020/02/12 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
python实现简单的socket server实例
2015/04/29 Python
Python创建模块及模块导入的方法
2015/05/27 Python
实例讲解Python中函数的调用与定义
2016/03/14 Python
Python3.6笔记之将程序运行结果输出到文件的方法
2018/04/22 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
Python中SQLite如何使用
2020/05/27 Python
Keras实现DenseNet结构操作
2020/07/06 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
中职三好学生事迹材料
2014/08/24 职场文书
工作犯错保证书
2015/05/11 职场文书
2015军训通讯稿大全
2015/07/18 职场文书
2016十一国庆节感言
2015/12/09 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
导游词之山海关
2019/12/10 职场文书