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 28 PHP
PHP flock 文件锁详细介绍
Dec 29 PHP
浅谈apache和nginx的rewrite的区别
Feb 22 PHP
php 检查电子邮件函数(自写)
Jan 16 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
Sep 11 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
thinkPHP5分页功能实现方法分析
Oct 25 PHP
PHP abstract 抽象类定义与用法示例
May 29 PHP
PHP SESSION机制的理解与实例
Mar 22 PHP
Laravel框架处理用户的请求操作详解
Dec 20 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定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
2017/05/12 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
vue动画效果实现方法示例
2019/03/18 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
python 随机数生成的代码的详细分析
2011/05/15 Python
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
使用Python处理BAM的方法
2018/09/28 Python
python导入坐标点的具体操作
2019/05/10 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
Python特殊属性property原理及使用方法解析
2020/10/09 Python
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
allbeauty美国:英国在线美容店
2019/03/11 全球购物
编辑找工作求职信分享
2014/01/03 职场文书
电气工程自动化求职信
2014/03/14 职场文书
电脑售后服务承诺书
2014/03/27 职场文书
公证书标准格式
2014/04/10 职场文书
学校交通安全责任书
2014/08/25 职场文书
社团个人总结范文
2015/03/05 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
《打电话》教学反思
2016/02/22 职场文书
2019辞职报告范本3篇!
2019/07/23 职场文书