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 相关文章推荐
dedecms中显示数字验证码的修改方法
Mar 21 PHP
php smarty的预保留变量总结
Dec 04 PHP
PHP中uploaded_files函数使用方法详解
Mar 09 PHP
一些需要禁用的PHP危险函数(disable_functions)
Feb 23 PHP
php列出一个目录下的所有文件的代码
Oct 09 PHP
php连接mssql数据库的几种方法
Feb 21 PHP
php多文件上传功能实现原理及代码
Apr 18 PHP
thinkphp中html:list标签传递多个参数实例
Oct 30 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 PHP
PHP积分兑换接口实例
Feb 09 PHP
php精度计算的问题解析
Jun 21 PHP
Yii框架分页技术实例分析
Aug 30 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缓存函数的使用说明
2013/05/10 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
Javascript学习笔记8 用JSON做原型
2010/01/11 Javascript
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
浅谈Python中数据解析
2015/05/05 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
浅谈python中真正关闭socket的方法
2018/12/18 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
工商管理应届生求职信
2013/10/07 职场文书
庆八一活动方案
2014/01/25 职场文书
先进工作者获奖感言
2014/02/08 职场文书
人事经理岗位职责
2014/04/28 职场文书
租车协议书范本2014
2014/11/17 职场文书
义诊活动总结
2015/02/04 职场文书
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL