深入array multisort排序原理的详解


Posted in PHP onJune 18, 2013
<?php
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
?>

<?php
$a = array(1,2,3);
$b = array(3);
// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($a, $b, $data);//数组一维个数不同
var_dump( $data);
?>

上面这个测试代码提示数组不一致的个数
<b>Warning</b>: array_multisort(): Array sizes are inconsistent in <b>G:\www\test\index.php</b> on line <b>15</b><br/>
再看
<?php
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7, 3, 4,4);//二维个数不同
?>

<?php
$a = array(11,2,3,4,5,6);
$b = array(3,3,3,3,3,3);
//从结果中看到对应11的array(67,7,3,4,4)按相同顺序出现了;
// 将数据根据 volume 降序排列,根据 edition 升序排列
// 把 $data 作为最后一个参数,以通用键排序
array_multisort($a, $b, $data);
var_dump( $a,$data);
?>

从上面的结果可以得知:
数组参数必须有相同的一维个数;
然后每个数组的对应位置(注意不是相同key,而是从自然位置对应着,如$a(1=>4),对应$b(99=>4) 的4,因为它们的位置都是第一个,而非key(1,99)的对应关系),对应位置中的值就像穿在一个个互相平等竹杆上一样,穿在上面的其中一个值需要调整位置时,就会导致同一"竹杆"上的其它值出现垂直移动.
 
类:
$a           $b          $c
4=>7    8=>10       '999' => 0
9=>9   0=>1       999=>9
0=> 2   9=> 3    9999=>7
----------------------
如果出现按$a的7与9对换,也就会带动$b的10与1对换 $c的0与9对换.
所以关系就像上面的三个数组,同色的在同一"阵线上",其中一个换,大家要一起换位置.
PHP 相关文章推荐
在PHP的图形函数中显示汉字
Oct 09 PHP
php cookies中删除的一般赋值方法
May 07 PHP
php在window iis的莫名问题的测试方法
May 14 PHP
discuz目录文件资料汇总
Dec 30 PHP
php计算两个文件相对路径的方法
Mar 14 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
Jul 06 PHP
Redis构建分布式锁
Mar 28 PHP
PHP查询分页的实现代码
Jun 09 PHP
PHP基于SimpleXML生成和解析xml的方法示例
Jul 17 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
Aug 01 PHP
PHP实现根据数组某个键值大小进行排序的方法
Mar 13 PHP
解析PHP工厂模式的好处
Jun 18 #PHP
PHP实现邮件群发的源码
Jun 18 #PHP
解析PHP跨站刷票的实现代码
Jun 18 #PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
Jun 18 #PHP
360通用php防护代码(使用操作详解)
Jun 18 #PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
Jun 18 #PHP
解析PHP计算页面执行时间的实现代码
Jun 18 #PHP
You might like
咖啡语言
2021/03/03 咖啡文化
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
php检测文件编码的方法示例
2014/04/25 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
你不需要jQuery(三) 新AJAX方法fetch()
2016/06/14 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
JS重载实现方法分析
2016/12/16 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
Python模块相关知识点小结
2020/03/09 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
如何利用Python 进行边缘检测
2020/10/14 Python
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
会计人员岗位职责
2014/03/19 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
庆祝教师节活动总结
2015/03/23 职场文书
大学生读书笔记范文
2015/07/01 职场文书
2015年学校管理工作总结
2015/07/20 职场文书
企业廉洁教育心得体会
2016/01/20 职场文书