深入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令牌 Token改进版
Jul 18 PHP
php中jQuery插件autocomplate的简单使用笔记
Jun 14 PHP
解析php防止form重复提交的方法
Jul 01 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
php使用exec shell命令注入的方法讲解
Nov 12 PHP
Laravel 4 初级教程之Pages、表单验证
Oct 30 PHP
php中instanceof 与 is_a()区别分析
Mar 03 PHP
php文件包含目录配置open_basedir的使用与性能详解
Apr 03 PHP
解决laravel 5.1报错:No supported encrypter found的办法
Jun 07 PHP
PHP实现防盗链的方法分析
Jul 25 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
Laravel多域名下字段验证的方法
Apr 04 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将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
thinkPHP多表查询及分页功能实现方法示例
2017/07/03 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
2013/09/26 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
2016/03/25 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
[03:47]2015国际邀请赛第三日现场精彩回顾
2015/08/08 DOTA
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
Python装饰器用法实例分析
2019/01/14 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
2019/04/16 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
scrapy-splash简单使用详解
2021/02/21 Python
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
2014年终个人工作总结
2014/11/07 职场文书
小学美术教学反思
2016/02/17 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python