深入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 相关文章推荐
输出控制类
Oct 09 PHP
《PHP边学边教》(01.开篇――准备工作)
Dec 13 PHP
WindowsXP中快速配置Apache+PHP5+Mysql
Jun 05 PHP
浅析PHP微信支付通知的处理方式
May 25 PHP
destoon各类调用汇总
Jun 20 PHP
php输入数据统一类实例
Feb 23 PHP
PHP也能干大事之PHP中的编码解码详解
Apr 20 PHP
php中二维数组排序问题方法详解
Aug 28 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
Jun 30 PHP
php遍历替换目录下文件指定内容的方法
Nov 10 PHP
PHP微信PC二维码登陆的实现思路
Jul 13 PHP
PHP数组与字符串互相转换实例
May 05 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
PHP使用GIFEncoder类处理gif图片实例
2014/07/01 PHP
php跨站攻击实例分析
2014/10/28 PHP
thinkphp框架实现数据添加和显示功能
2016/06/29 PHP
laravel-admin 中列表筛选方法
2019/10/03 PHP
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
2016/11/10 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
详解vue 命名视图
2019/08/14 Javascript
[02:58]献给西雅图的情书_高清
2014/05/29 DOTA
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
详解python中__name__的意义以及作用
2019/08/07 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
Python常用数据类型之间的转换总结
2019/09/06 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
2017/08/18 HTML / CSS
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
Hotels.com印度:酒店预订
2019/05/11 全球购物
监督检查工作方案
2014/05/28 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
工会工作个人总结
2015/03/03 职场文书
如何开发一个渐进式Web应用程序PWA
2021/05/10 Javascript
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技