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、一次对多个数组进行排序:
$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))
PHP数组排序函数array_multisort()函数详解(一)的更多相关文章
- (八)open函数的flag详解
3.1.4.open函数的flag详解13.1.4.1.读写权限:O_RDONLY O_WRONLY O_RDWR(1)linux中文件有读写权限,我们在open打开文件时也可以附带一定的权限说明(譬 ...
- 节点地址的函数list_entry()原理详解
本节中,我们继续讲解,在linux2.4内核下,如果通过一些列函数从路径名找到目标节点. 3.3.1)接下来查看chached_lookup()的代码(namei.c) [path_walk()> ...
- JS中的函数节流throttle详解和优化
JS中的函数节流throttle详解和优化在前端开发中,有时会为页面绑定resize事件,或者为一个页面元素绑定拖拽事件(mousemove),这种事件有一个特点,在一个正常的操作中,有可能在一个短的 ...
- jQuery height()、innerHeight()、outerHeight()函数的区别详解
参考来源:http://www.jb51.net/article/84897.htm 代码示例(可复制到编辑器直接打开): <!DOCTYPE html> <html lang=&q ...
- c++中内存拷贝函数(C++ memcpy)详解
原型:void*memcpy(void*dest, const void*src,unsigned int count); 功能:由src所指内存区域复制count个字节到dest所指内存区域. 说明 ...
- 【转】Python的hasattr() getattr() setattr() 函数使用方法详解
Python的hasattr() getattr() setattr() 函数使用方法详解 hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值 ...
- Oracle排名函数(Rank)实例详解
这篇文章主要介绍了Oracle排名函数(Rank)实例详解,需要的朋友可以参考下 --已知:两种排名方式(分区和不分区):使用和不使用partition --两种计算方式(连续,不连续),对应 ...
- PHP截取字符串函数substr()函数实例用法详解
在PHP中有一项非常重要的技术,就是截取指定字符串中指定长度的字符.PHP对于字符串截取可以使用PHP预定义函数substr()函数来实现.下面就来介绍一下substr()函数的语法及其应用. sub ...
- mysql 聚集函数 count 使用详解
mysql 聚集函数 count 使用详解 本文将探讨以下问题 1.count(*) . count(n).count(null)与count(fieldName) 2.distinct 与 coun ...
- JavaScript进阶知识点——函数和对象详解
JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...
随机推荐
- hdu1198(模拟搜索)
这个题目,比较恶心,思路很是简单,就是模拟的时候有些麻烦......水题 #include<iostream> #include<cstdio> #include<cst ...
- MyBatisBatchItemWriter Cannot change the ExecutorType when there is an existing transaction
但凡使用mybatis,同时与spring集成使用时,接下来要说的这个问题是躲不了的.众所周知,mybatis的SqlSessionFactory在获取一个SqlSession时使用默认Executo ...
- 10G整数,找出中位数
摘自: http://www.cnblogs.com/avril/archive/2012/04/20/2460805.html http://blog.csdn.net/flyinghearts/a ...
- laravel iis搭建
1.urlrewrite https://www.iis.net/downloads/microsoft/url-rewrite 2.安装phpmanager 3.目录定位到public 赋给iuse ...
- docker探索-CentOS7中配置Docker的yum源并升级安装docker1.13(十)
此处使用的是CentOS7,内核版本为 [root@localhost ~]# uname -r -.el7.x86_64 该版本下,配置了yum的源为阿里的镜像源,具体的配置方法可以参见阿里镜像源配 ...
- VS2013代码调试:[7]如何避免调试时加载符号
调试的时候不小心点了个东西,然后就花很长时间加在各种dll 解决办法: 1.点 调试2.然后 选项和设置3.右边勾上 启用源服务器支持4.左边点 符号5.把微软符号服务器勾6.运行的时候等一下 莫慌! ...
- mac 系统中vim安装ctags插件
1,mac自带的ctags程序不是exuberant ctags, 所以使用时会出现问题,所以要重新安装一个: brew install exuberant ctags 安装完, which ctag ...
- Java输出字符串格式问题 .UnknownFormatConversionException
今天遇到一个问题,使用JSoup挖掘出的数据一直出错 Exception in thread "main" java.util.UnknownFormatConversionExc ...
- Iconfont在移动端应用的问题
关于部分奇葩用户代理不显示字体图标 以酷派为代表的部分安卓手机自带浏览器.微信/QQ WebView 等用户代理无法正常显示 Icon Font,原因可能是这些用户代理无法正确处理伪元素 conten ...
- mybatis配置进阶
结果集的列比resultMap多会报错么?不会,只映射resultMap中有的列. 结果集的列比resultMap少会报错么?不会,只映射结果集中有的列. 高级结果映射 resultMap ...