深入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安装全攻略:APACHE
Oct 09 PHP
使用bcompiler对PHP文件进行加密的代码
Aug 29 PHP
PHP学习之数组值的操作
Apr 17 PHP
获取PHP警告错误信息的解决方法
Jun 03 PHP
IIS6.0中配置php服务全过程解析
Aug 07 PHP
Yii不依赖Model的表单生成器用法实例
Dec 04 PHP
php PDO异常处理详解
Nov 20 PHP
PHP利用二叉堆实现TopK-算法的方法详解
Apr 24 PHP
Laravel学习教程之路由模块
Aug 18 PHP
PHP 获取客户端 IP 地址的方法实例代码
Nov 11 PHP
PhpStorm配置Xdebug调试的方法步骤
Feb 02 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 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解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
PDO::exec讲解
2019/01/28 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
2011/12/26 Javascript
js 窗口抖动示例
2013/09/04 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
2016/01/27 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
泛谈JS逻辑判断选择器 || &amp;&amp;
2019/05/24 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
使用Vue生成动态表单
2019/11/26 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
Python根据成绩分析系统浅析
2019/02/11 Python
python中JWT用户认证的实现
2020/05/18 Python
浅析Python 序列化与反序列化
2020/08/05 Python
Python暴力破解Mysql数据的示例
2020/11/09 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
德国最大的设计师鞋网上商店:Budapester
2017/12/07 全球购物
电大会计学自我鉴定
2014/02/06 职场文书
公司离职证明样本
2014/09/13 职场文书
2014年个人债务授权委托书范本
2014/09/22 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
教师师德师风整改措施
2014/10/24 职场文书
感恩节寄语2015
2015/03/24 职场文书
七年级作文之雪景
2019/11/18 职场文书