php array_intersect比array_diff快(附详细的使用说明)


Posted in PHP onJuly 03, 2011

如果要求数组 $a 与数组 $b 的差集的个数,应该使用 count($a) - count(array_intersect($a, $b)),而不要用 count(array_diff($a, $b));

前面要比后者快,在大数组中更为明显。

1.array_intersect函数
array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
#1 array_intersect() 例子

<?php 
$array1 = array("a" => "green", "red", "blue"); 
$array2 = array("b" => "green", "yellow", "red"); 
$result = array_intersect($array1, $array2); 
?> 
这使得 $result 成为: 
Array 
( 
[a] => green 
[0] => red 
)

2.自我实现的array_intersect()函数比php原函数array_intersect()快五倍
/** 
* 
* 自定义的array_intersect 
* 如果求的是一维数组的交集这个函数比系统的array_intersect快5倍 
* 
* @param array $arr1 
* @param array $arr2 
* @author LIUBOTAO 2010-12-13上午11:40:20 
* 
*/ 
function my_array_intersect($arr1,$arr2) 
{ 
for($i=0;$i<sizeof($arr1);$i++) 
{ 
$temp[]=$arr1[$i]; 
} 
for($i=0;$i<sizeof($arr1);$i++) 
{ 
$temp[]=$arr2[$i]; 
} 
sort($temp); 
$get=array(); 
for($i=0;$i<sizeof($temp);$i++) 
{ 
if($temp[$i]==$temp[$i+1]) 
$get[]=$temp[$i]; 
} 
return $get; 
} 
$array1 = array("green", "red", "blue"); 
$array2 = array("green", "yellow", "red"); 
echo "<pre>"; 
print_r(my_array_intersect($array1, $array2)); 
echo "<pre/>";

array_diff — 计算数组的差集

array array_diff ( array $array1 , array $array2 [, array $ ... ] )
array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。

#1 array_diff() 例子

<?php 
$array1 = array("a" => "green", "red", "blue", "red"); 
$array2 = array("b" => "green", "yellow", "red"); 
$result = array_diff($array1, $array2); 
print_r($result); 
?>

在 $array1 中多次出现的值一样处理,输出结果为:
Array 
( 
[1] => blue 
)

Note: 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。

Note: 注意本函数只检查了多维数组中的一维。当然可以用 array_diff($array1[0], $array2[0]); 检查更深的维度。

PHP 相关文章推荐
PHP 数组遍历顺序理解
Sep 09 PHP
一步一步学习PHP(1) php开发环境配置
Feb 15 PHP
php中文验证码实现示例分享
Jan 12 PHP
ThinkPHP之import方法实例详解
Jun 20 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
destoon实现VIP排名一直在前面排序的方法
Aug 21 PHP
php生成高清缩略图实例详解
Dec 07 PHP
学习php设计模式 php实现备忘录模式(Memento)
Dec 09 PHP
基于PHP如何把汉字转化为拼音
Dec 11 PHP
Thinkphp批量更新数据的方法汇总
Jun 29 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
php header Content-Type类型小结
Jul 03 #PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 #PHP
PHP采集利器 Snoopy 试用心得
Jul 03 #PHP
php中的三元运算符使用说明
Jul 03 #PHP
PHP 数据结构 算法 三元组 Triplet
Jul 02 #PHP
php中批量删除Mysql中相同前缀的数据表的代码
Jul 01 #PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
Jul 01 #PHP
You might like
PHP与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php多重接口的实现方法
2015/06/20 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
关于递归运算的顺序测试代码
2011/11/30 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
2014/06/26 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
2014/12/15 Javascript
jQuery中animate动画第二次点击事件没反应
2015/05/07 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
javascript过滤数组重复元素的实现方法
2017/05/03 Javascript
angular4自定义组件详解
2017/09/28 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
详解如何快速配置webpack多入口脚手架
2018/12/28 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
Atom的python插件和常用插件说明
2018/07/08 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
HTML5地理定位实例
2014/10/15 HTML / CSS
50道外企软件测试面试题
2014/08/18 面试题
医学护理系毕业生求职信
2013/10/01 职场文书
医院工作检讨书范文
2014/02/10 职场文书
高级工程师英文求职信
2014/03/19 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
个人务虚会发言材料
2014/10/20 职场文书
神农溪导游词
2015/02/11 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
MySQL 数据类型详情
2021/11/11 MySQL
青岛市的收音机研制与生产
2022/04/07 无线电