php的array_multisort()使用方法介绍


Posted in PHP onMay 16, 2012

使用 array_multisort()函数对多个数组或多维数组进行排序的函数,正在研究数组排序、多维数组排序的朋友可以看看。

函数 bool array_multisort ( array &$arr [, mixed $arg = SORT_ASC [, mixed $arg = SORT_REGULAR [, mixed $...]]] )

参数说明: 函数对多个数组或多维数组进行排序

第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志
SORT_ASC - 默认,按升序排列
SORT_DESC - 按降序排列
随后可以指定排序的类型
SORT_REGULAR - 默认。将每一项按常规顺序排列。
SORT_NUMERIC - 将每一项按数字顺序排列。
SORT_STRING - 将每一项按字母顺序排列。
例:

<?php
$arr1 = array('10', 11, 100, 100, 'a'); 
$arr2 = array(1, 2, 3, '2', 5); 
array_multisort($arr1, $arr2); 
?>

结果为:
$arr1
Array ( [0] => 10 [1] => a [2] => 11 [3] => 100 [4] => 100 )
# '10'在与11, 100, 100比较时转换为整数10,小于其他三个数
# '10'在于'a'比较时作为字符串,其第一个字符'1'ascii码值为49小于‘a'(ascii值为97),所以‘10'为最小元素
# 'a'在于其他三个数字比较时,转换为整数0,小于其他三个数
$arr2
Array ( [0] => 1 [1] => 5 [2] => 2 [3] => 2 [4] => 3 )
# $arr2元素1与$arr1元素'10'位置对应,所以排在[0]位置
# $arr1[2] => 100, $arr1[3] => 100分别对应$arr2元素3, '2'。3大于'2',所以与2对应的$arr1[2] => 100排序后的下标为3,与3对应的$arr1[3] => 100排序的下标为4
总结----------
1.参与排序的数组元素数保持一致
2.排序数组元素位置对应如, ‘10' => 1 , 11 => 2
3.后边的数组在前边数组的顺序的基础上进行排序
4.前边的数组如遇相等的元素则比较后边的数组

下边就是使用的实例,手册上的例子不列了,就我自己工作中的几个。
工作中碰到最多的可能就是二维数组了,想试试三维数组,但是想想还是算了。

header('Content-Type: text/html; charset=utf-8'); 
echo '<pre>'; 
//原始数组格式 
$array = array( 
'key1' => array( 
'item1' => '65', 
'item2' => '35', 
'item3' => '84', 
), 
'key2' => array( 
'item1' => '24', 
), 
'key3' => array( 
'item1' => '38', 
'item3' => '45', 
), 
); 
//要排序的键 
//按照数组中的 item1进行排序 
//你也可以换成item2 
$sort = 'item1'; 
foreach($array as $k => $v) 
{ 
$newArr[$k] = $v[$sort]; 
} 
//这个函数如果执行正确他会直接改变原数组键值的顺序 
//如果执行失败,那么他会返回 bool(false) 
array_multisort($newArr,SORT_DESC, $array); 
var_dump($array); 
//---------------------排序后的数组打印效果 开始-------------------- 
array(3) { 
["key1"]=> 
array(3) { 
["item1"]=> 
string(2) "65" 
["item2"]=> 
string(2) "35" 
["item3"]=> 
string(2) "84" 
} 
["key3"]=> 
array(2) { 
["item1"]=> 
string(2) "38" 
["item3"]=> 
string(2) "45" 
} 
["key2"]=> 
array(1) { 
["item1"]=> 
string(2) "24" 
} 
} 
//---------------------排序后的数组打印效果 结束---------------------

PHP 相关文章推荐
一个自定义位数的php多用户计数器代码
Mar 11 PHP
php 修改zen-cart下单和付款流程以防止漏单
Mar 08 PHP
php中函数的形参与实参的问题说明
Sep 01 PHP
PHP实现多进程并行操作的详解(可做守护进程)
Jun 18 PHP
PHP对接微信公众平台消息接口开发流程教程
Mar 25 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
服务器迁移php版本不同可能诱发的问题
Dec 22 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
May 31 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
Oct 21 PHP
PHP获取当前时间不准确问题解决方案
Aug 14 PHP
PHP之header函数详解
Mar 02 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
May 16 #PHP
php array的学习笔记
May 16 #PHP
php文件操作实例代码
May 10 #PHP
PHP图片验证码制作实现分享(全)
May 10 #PHP
php array的学习笔记
May 10 #PHP
php 中的4种标记风格介绍
May 10 #PHP
php中常用的预定义变量小结
May 09 #PHP
You might like
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
js中eval详解
2012/03/30 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
微信小程序(三):网络请求
2017/01/13 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
Node.js 异步异常的处理与domain模块解析
2017/05/10 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
关于vue面试题汇总
2018/03/20 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
python实现排序算法
2014/02/14 Python
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
python基本语法练习实例
2017/09/19 Python
python实现TCP文件传输
2020/03/20 Python
python如何查看网页代码
2020/06/07 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
python实现学生通讯录管理系统
2021/02/25 Python
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
PHP面试题大全
2015/10/16 面试题
门卫岗位安全职责
2013/12/13 职场文书
婚礼证婚人证婚词
2014/01/13 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
员工工作能力评语
2014/12/31 职场文书
广告公司文案策划岗位职责
2015/04/14 职场文书
房屋质量投诉书
2015/07/02 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
公司保密管理制度
2015/08/04 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js
vue判断按钮是否可以点击
2022/04/09 Vue.js
Redis实战高并发之扣减库存项目
2022/04/14 Redis