php array_multisort 对数组进行排序详解及实例代码


Posted in PHP onOctober 27, 2016

php 中array_multisort() 函数可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。本文章向大家讲解array_multisort函数的使用方法。

 array_multisort() 函数返回排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序,接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。

注释:字符串键名将被保留,但是数字键名将被重新索引,从 0 开始,并以 1 递增。

注释:您可以在每个数组后设置排序顺序和排序类型参数。如果没有设置,每个数组参数会使用默认值。

语法

array_multisort(array1,sorting order,sorting type,array2,array3...) 

参数描述

参数 描述
array1 必需。要排序的一个。
sorting order 可选。规定排列顺序。可能的值: SORT_ASC - 默认。按升序排列 (A-Z)。 SORT_DESC - 按降序排列 (Z-A)。
sorting type 可选。规定排序类型。可能的值: SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。 SORT_NUMERIC - 把每一项作为数字来处理。 SORT_STRING - 把每一项作为字符串来处理。 SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。 SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。 SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。
array2 可选。规定数组。
array3 可选。规定数组。

 返回值

成功时返回 TRUE , 或者在失败时返回 FALSE 。

说明

array_multisort() 函数对多个数组或多维数组进行排序。

参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。

第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:

SORT_ASC - 默认,按升序排列。(A-Z)
SORT_DESC - 按降序排列。(Z-A)

随后可以指定排序的类型:

SORT_REGULAR - 默认。将每一项按常规顺序排列。
SORT_NUMERIC - 将每一项按数字顺序排列。
SORT_STRING - 将每一项按字母顺序排列。

实例一:

排序多维数组

<?php
 $ar = array(
    array("10",11,100,100,"a"),
    array(1,2,"2",3,1)
   );
 array_multisort($ar[0], SORT_ASC,SORT_STRING,$ar[1],SORT_NUMERIC,SORT_DESC);
 var_dump($ar);
?>

本例中在排序后,第一个数组将变成 "10",100,100,11,"a"(被当作字符串以升序排列)。第二个数组将包含 1, 3, "2", 2, 1(被当作数字以降序排列)。

运行结果:

array(2) {
 [0]=> array(5) {
  [0]=> string(2) "10"
  [1]=> int(100)
  [2]=> int(100)
  [3]=> int(11)
  [4]=> string(1) "a"
 }
 [1]=> array(5) {
  [0]=> int(1)
  [1]=> int(3)
  [2]=> string(1) "2"
  [3]=> int(2)
  [4]=> int(1)
 }
}

实例二:

不区分大小写字母排序

SORT_STRING 和 SORT_REGULAR 都是区分大小写字母的,大写字母会排在小写字母之前。
要进行不区分大小写的排序,就要按照原数组的小写字母拷贝来排序。

<?php
 $array=array('Alpha','atomic','Beta','bank');
 $array_lowercase=array_map('strtolower',$array);
 array_multisort($array_lowercase,SORT_ASC,SORT_STRING,$array);
 print_r($array);
?>

运行结果:

Array
(
  [0] => Alpha
  [1] => atomic
  [2] => bank
  [3] => Beta
)

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
Nov 18 PHP
PHP-redis中文文档介绍
Feb 07 PHP
PH P5.2至5.5、5.6的新增功能详解
Jul 14 PHP
php读取远程gzip压缩网页的方法
Dec 29 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
Jul 03 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
php实现的二分查找算法示例
Jun 20 PHP
swoole和websocket简单聊天室开发
Nov 18 PHP
PHP实现的解汉诺塔问题算法示例
Aug 06 PHP
php二维数组按某个键值排序的实例讲解
Feb 15 PHP
thinkphp5使用无限极分类
Feb 18 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 PHP
PHP中的密码加密的解决方案总结
Oct 26 #PHP
php 解析xml 的四种方法详细介绍
Oct 26 #PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
Oct 26 #PHP
php 生成签名及验证签名详解
Oct 26 #PHP
PHP XML和数组互相转换详解
Oct 26 #PHP
PHP对XML内容进行修改和删除实例代码
Oct 26 #PHP
php array_merge_recursive 数组合并
Oct 26 #PHP
You might like
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
PHP的自定义模板引擎
2017/03/24 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
js相册效果代码(点击创建即可)
2013/04/16 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
Js apply方法详解
2017/02/16 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
跟老齐学Python之dict()的操作方法
2014/09/24 Python
python类装饰器用法实例
2015/06/04 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
考博专家推荐信模板
2013/12/02 职场文书
护士实习求职信
2014/06/22 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
搭建Yolov5服务器
2022/04/30 Servers