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你的验证码安全码?
Jan 02 PHP
发布一个用PHP fsockopen写的HTTP下载的类
Feb 22 PHP
PHP设计模式 注册表模式
Feb 05 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
Apr 08 PHP
php如何实现只替换一次或N次
Oct 29 PHP
Laravel与CI框架中截取字符串函数
May 08 PHP
PHP批量删除jQuery操作
Jul 23 PHP
PHP编程实现脚本异步执行的方法
Aug 09 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
PHP abstract 抽象类定义与用法示例
May 29 PHP
php png失真的原因及解决办法
Oct 24 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/30 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
js setattribute批量设置css样式
2009/11/26 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
2016/11/10 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
2018/09/30 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
Python引用模块和查找模块路径
2016/03/17 Python
利用python批量修改word文件名的方法示例
2017/10/17 Python
django定期执行任务(实例讲解)
2017/11/03 Python
Sanic框架应用部署方法详解
2018/07/18 Python
Django 自动生成api接口文档教程
2019/11/19 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
python中str内置函数用法总结
2020/12/27 Python
工厂保洁员岗位职责
2013/12/04 职场文书
中专生自我鉴定范文
2013/12/19 职场文书
光盘行动倡议书
2014/02/02 职场文书
询价采购方案
2014/06/09 职场文书
法定代表人授权委托书范文
2014/08/02 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
贷款担保书
2015/01/20 职场文书
mysql知识点整理
2021/04/05 MySQL
Navicat连接MySQL错误描述分析
2021/06/02 MySQL
python Django框架快速入门教程(后台管理)
2021/07/21 Python
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android