深入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 远程图片保存到本地的函数类
Dec 08 PHP
php mssql 时间格式问题
Jan 13 PHP
php str_pad 函数用法简介
Jul 11 PHP
php教程 插件机制在PHP中实现方案
Nov 02 PHP
PHPThumb图片处理实例
May 03 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
Jun 26 PHP
PHP开发框架kohana中处理ajax请求的例子
Jul 14 PHP
php使用递归计算文件夹大小
Dec 24 PHP
Yii框架弹出框功能示例
Jan 07 PHP
PHP那些琐碎的知识点(整理)
May 20 PHP
Eclipse PHPEclipse 配置的具体步骤
Aug 08 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 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编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
php预定义变量使用帮助(带实例)
2013/10/30 PHP
分享php分页的功能模块
2015/06/16 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
javascript 自动转到命名锚记
2009/01/10 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
JS正则表达式学习之贪婪和非贪婪模式实例总结
2016/12/26 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
Angularjs按需查询实例代码
2017/10/30 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
js实现图片3D轮播效果
2019/09/21 Javascript
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
Python连接mysql数据库的正确姿势
2016/02/03 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
Lookfantastic香港官网:英国知名美妆购物网站
2018/06/19 全球购物
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
如何写你的创业计划书
2014/01/07 职场文书
电焊工岗位职责
2014/03/06 职场文书
小学教师寄语大全
2014/04/03 职场文书
经济国贸专业求职信
2014/06/18 职场文书
创业方案:赚钱的烧烤店该怎样做?
2019/07/05 职场文书