深入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 相关文章推荐
NT IIS下用ODBC连接数据库
Oct 09 PHP
再次研究下cache_lite
Feb 14 PHP
php读取javascript设置的cookies的代码
Apr 12 PHP
php写的带缓存数据功能的mysqli类
Sep 06 PHP
Php无限级栏目分类读取的实现代码
Feb 19 PHP
Fedora下安装php Redis扩展笔记
Sep 03 PHP
Laravel 5.3 学习笔记之 配置
Aug 28 PHP
PHP数组操作简单案例分析
Oct 15 PHP
php四种定界符详解
Feb 16 PHP
php简单生成一组与多组随机字符串的方法
May 09 PHP
Laravel实现搜索的时候分页并携带参数
Oct 15 PHP
PHP const定义常量及global定义全局常量实例解析
May 28 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
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
2013/06/20 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
一些不错的js函数ajax
2008/08/20 Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
仿微博字符限制效果实现代码
2012/04/20 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
2016/07/04 Javascript
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
关于vue编译版本引入的问题的解决
2018/09/17 Javascript
微信小程序实现九宫格抽奖
2020/04/15 Javascript
express框架下使用session的方法
2019/07/31 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
python基础教程之基本内置数据类型介绍
2014/02/20 Python
Python中的rfind()方法使用详解
2015/05/19 Python
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
关于Python中异常(Exception)的汇总
2017/01/18 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
python输入多行字符串的方法总结
2019/07/02 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
金智子午JAVA面试题
2015/09/04 面试题
上课看小说检讨书
2014/02/22 职场文书
乡文化站暑期培训方案
2014/08/28 职场文书
先进工作者事迹材料
2014/12/23 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
浅析Django接口版本控制
2021/06/26 Python