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入门学习的几个不错的实例代码
Jul 13 PHP
收集的二十一个实用便利的PHP函数代码
Apr 22 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
使用PHP备份MYSQL数据的多种方法
Jan 15 PHP
php判断ip黑名单程序代码实例
Feb 24 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
Jul 14 PHP
C/S和B/S两种架构区别与优缺点分析
Oct 23 PHP
php批量删除超链接的实现方法
Oct 19 PHP
如何使用GDB调试PHP程序
Dec 08 PHP
php实现购物车功能(下)
Jan 05 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
PHP批斗大会之缺失的异常详解
Jul 09 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
咖啡与牛奶
2021/03/03 冲泡冲煮
香妃
2021/03/03 冲泡冲煮
php文本转图片自动换行的方法
2013/03/13 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
用jquery实现自定义风格的滑动条实现代码
2011/04/26 Javascript
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
JS实现判断碰撞的方法
2015/02/11 Javascript
JSON遍历方式实例总结
2015/12/07 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
js实现消息滚动效果
2017/01/18 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
Python实现简单截取中文字符串的方法
2015/06/15 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
Python 加密的实例详解
2017/10/09 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
python 读取数据库并绘图的实例
2019/12/03 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
高级编程求职信模板
2014/02/16 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电
微信小程序中使用vant框架的具体步骤
2022/02/18 Javascript
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python
Python时间操作之pytz模块使用详解
2022/06/14 Python