深入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中的 == 运算符进行字符串比较
Nov 26 PHP
smarty+adodb+部分自定义类的php开发模式
Dec 31 PHP
Mysql中limit的用法方法详解与注意事项
Apr 19 PHP
PHP 采集程序中常用的函数
Dec 09 PHP
PHPMailer 中文使用说明小结
Jan 22 PHP
30 个很棒的PHP开源CMS内容管理系统小结
Oct 14 PHP
PHP中strtotime函数使用方法分享
Jan 10 PHP
PHP中exec与system用法区别分析
Sep 22 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
php使用curl通过代理获取数据的实现方法
May 16 PHP
PHP实现带重试功能的curl连接示例
Jul 28 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
May 09 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
重置版游戏视频
2020/04/09 魔兽争霸
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
跟我学习javascript的作用域与作用域链
2015/11/19 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
Django学习笔记之Class-Based-View
2017/02/15 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
python+PyQT实现系统桌面时钟
2020/06/16 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
Python面向对象封装操作案例详解
2019/12/31 Python
Python如何生成xml文件
2020/06/04 Python
Python3.8.2安装包及安装教程图文详解(附安装包)
2020/11/28 Python
简单的项目建议书模板
2014/03/12 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
餐饮周年庆活动方案
2014/08/14 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
立项申请报告范本
2015/05/15 职场文书
如何写好活动总结
2019/06/21 职场文书
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android