开发者社区> 长征6号> 正文

PHP array_multisort—对多个数组或多维数组进行排序

简介:
+关注继续查看

PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。 

关联(string)键名保持不变,但数字键名会被重新索引。
输入数组被当成一个表的列并以行来排序——这类似于 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话就按照下一个输入数组中相应值的大小来排序,依此类推。——这句话是理解此函数用法的关键。

第一个参数必须是一个数组。接下来的每个参数可以是数组或者是下面列出的排序标志。

排序顺序标志:
■SORT_ASC - 按照上升顺序排序
■SORT_DESC - 按照下降顺序排序

排序类型标志:
■SORT_REGULAR - 将项目按照通常方法比较
■SORT_NUMERIC - 将项目按照数值比较
■SORT_STRING - 将项目按照字符串比较

每个数组之后不能指定两个同类的排序标志。每个数组后指定的排序标志仅对该数组有效 - 在此之前为默认值 SORT_ASC 和 SORT_REGULAR。

看看两个实际例子:

1、一次对多个数组进行排序:

复制代码
1 $num1 = array(3, 5, 4, 3);
2 $num2 = array(27, 50, 44, 78);
3 array_multisort($num1, SORT_ASC, $num2, SORT_DESC);
4 
5 print_r($num1);
6 print_r($num2);
7 //result: Array ( [0] => 3 [1] => 3 [2] => 4 [3] => 5 ) Array ( [0] => 78 [1] => 27 [2] => 44 [3] => 50 ) 
复制代码

2、对多维数组(以二位数组为例)进行排序:

复制代码
 1 $arr = array(
 2     '0' => array(
 3         'num1' => 3,
 4         'num2' => 27 
 5     ),
 6     
 7     '1' => array(
 8         'num1' => 5,
 9         'num2' => 50
10     ),
11     
12     '2' => array(
13         'num1' => 4,
14         'num2' => 44
15     ),
16     
17     '3' => array(
18         'num1' => 3,
19         'num2' => 78
20     ) 
21 );
22 
23 foreach ( $arr as $key => $row ){
24     $num1[$key] = $row ['num1'];
25     $num2[$key] = $row ['num2'];
26 }
27 
28 array_multisort($num1, SORT_ASC, $num2, SORT_DESC, $arr);
29 
30 print_r($arr);
31 //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))
复制代码

 

---------------------------------------------------------------------------------
笔者水平有限,若有错漏,欢迎指正,如果转载以及CV操作,请务必注明出处,谢谢!
分类: PHP

本文转自Windstep博客园博客,原文链接:http://www.cnblogs.com/lwbqqyumidi/archive/2013/01/31/2887188.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用tuple返回多个值
17.4编写并测试findbook函数 #include #include #include #include #include #include"Sales_data.h" using namespace std; typedef tuple matches; vecto...
601 0
***PHP 数组排序 +php二维数组排序方法(PHP比较器)
PHP - 一维数组的排序函数 在本节中,我们将学习如下 PHP 数组排序函数: sort() - 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据值,以升序对关联数组进行排序 ksort() - 根据键,以升序对关联数组进行排序 arsort() - 根据值,以降序对关联数组进行排序 krsort() - 根据键,以降序对关联数组进行排序   一维数组排序可以使用asort、ksort等一些方法进程排序,相对来说比较简单。
1031 0
.NET 构造DataTable返回多个json值
有时候我们使用Ajax链接一般处理程序需要返回多个值,然而这些数据并非在一个查询表内,此时便想到构造一个虚拟的DataTable,这样就可以返回多个值了(当然有很多办法,这是其中一种 )。
936 0
php-build 安装管理多个PHP版本的好帮手
当你开发多个使用PHP不同版本的项目的时候,你也许会期望类似Python 的virtualenv或者Ruby的rvm的工具。虽然php-build不能像virtualenv或rvm一样自动切换环境,但是它能帮助你编译和管理不同版本的PHP安装。
39 0
开发函数计算的正确姿势———为 PHP 运行时添加自定义扩展
PHP 语言提供了一种扩展机制(Extension),通过 PHP 扩展可以增强语法、调用 C/C++ 实现的库函数以及优化执行性能。PHP 扩展是与平台相关的动态链接库,在 Linux 和 Mac 平台是 .so 文件,在 Windows 平台是 .dll 文件。由于函数计算的开发通常在 Mac 和 Windows 平台,而运行时是 Linux(Debain)环境,所以为函数计算 PHP 运行时添加扩展会遇到由于动态链接库平台相关而导致要么本地无法调试,要么远端无法运行的问题。本文介绍借助 Funcraft 工具提供的模拟环境进行 PHP 扩展的安装、本地运行调试以及构建发布。
503 0
LINQ 按多个字段排序(orderby、thenby、Take)
LINQ 按多个字段排序(orderby、thenby、Take) orderby  子句解析为 OrderBy()方法,orderby descending 子句解析为OrderBy Descending()方法: var racers = Formula1.
1133 0
EF 之 MVC 排序,查询,分页 Sorting, Filtering, and Paging For MVC About EF
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来。    十年河东十年河西,莫欺少年穷    学无止境,精益求精    上篇博客我们学习了EF CodeFirst增删改查之‘CRUD’,今儿,我们来探讨下MVC下的EF 排序、查询、分页操作    在此,本人先从分页说起    话说,做过webForm项目的程序员用AspNetPage.
1249 0
.NET 构造Class返回多个json值
  上次总结使用DataTable返回多个值,后来看到一个小哥的返回方式和我的有所不同,便留意了一下。原来他构造一个Class,而我构造的是一个Table。   首先说说两者的区别:拿student举例,student1有学号,姓名,成绩,student2,student3...都有该属性。
814 0
+关注
1224
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载