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与MySQL交互使用详解
Oct 09 PHP
实用函数2
Nov 08 PHP
zend api扩展的php对象的autoload工具
Apr 18 PHP
PHP中PDO基础教程 入门级
Sep 04 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
php cookie中点号(句号)自动转为下划线问题
Oct 21 PHP
php连接odbc数据源并保存与查询数据的方法
Dec 24 PHP
php常见的魔术方法详解
Dec 25 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
Dec 25 PHP
给大家分享几个常用的PHP函数
Jan 15 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
Apr 10 PHP
PHP实现获取url地址中顶级域名的方法示例
Jun 05 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
PHP数学运算与数据处理实例分析
2016/04/01 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
解析javascript 实用函数的使用详解
2013/05/10 Javascript
js的延迟执行问题分析
2014/06/23 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
js实现获取当前时间是本月第几周的方法
2015/08/11 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
基于JavaScript实现移除(删除)数组中指定元素
2016/01/04 Javascript
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
Python实现通过文件路径获取文件hash值的方法
2017/04/29 Python
python删除字符串中指定字符的方法
2018/08/13 Python
python对文件目录的操作方法实例总结
2019/06/24 Python
jupyter 导入csv文件方式
2020/04/21 Python
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
Linux操作面试题
2015/02/11 面试题
linux面试题参考答案(7)
2014/07/24 面试题
英语专业毕业生自我鉴定
2013/11/09 职场文书
毕业生简单求职信
2013/11/19 职场文书
自我鉴定怎么写
2013/12/05 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS