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 相关文章推荐
如何过滤高亮显示非法字符
Oct 09 PHP
实现dedecms全站URL静态化改造的代码
Mar 29 PHP
PHP 5.3.0 安装分析心得
Aug 07 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
PHP定时执行计划任务的多种方法小结
Dec 19 PHP
php 批量添加多行文本框textarea一行一个
Jun 03 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
PHP数组内存利用率低和弱类型详细解读
Aug 10 PHP
Laravel核心解读之异常处理的实践过程
Feb 24 PHP
对laravel的session获取与存取方法详解
Oct 08 PHP
Laravel 之url参数,获取路由参数的例子
Oct 21 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 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使用Smarty的相关注意事项及访问变量的几种方式
2011/12/08 PHP
php接口与接口引用的深入解析
2013/08/09 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
ThinkPHP3.1数据CURD操作快速入门
2014/06/19 PHP
学习php设计模式 php实现合成模式(composite)
2015/12/08 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
angular.bind使用心得
2015/10/26 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
2019/09/09 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
Python实现的数据结构与算法之链表详解
2015/04/22 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
python无序链表删除重复项的方法
2020/01/17 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
Vertbaudet西班牙网上商店:婴儿服装、童装、母婴用品和儿童家具
2019/10/16 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
大学生个人实习的自我评价
2014/02/15 职场文书
物流管理专业推荐信
2014/09/06 职场文书
副乡长群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
婚宴新郎致辞
2015/07/28 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS