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数组函数序列之in_array() - 查找数组中是否存在指定值
Nov 07 PHP
PHPMYADMIN导入数据最大为2M的解决方法
Apr 23 PHP
解析thinkphp基本配置 convention.php
Jun 18 PHP
php获取淘宝分类id示例
Jan 16 PHP
yii上传文件或图片实例
Apr 01 PHP
php使用Jpgraph绘制饼状图的方法
Jun 10 PHP
WordPress的主题编写中获取头部模板和底部模板
Dec 28 PHP
php简单复制文件的方法
May 09 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
Jul 14 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 29 PHP
基于Laravel-admin 后台的自定义页面用法详解
Sep 30 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防注入漏洞过滤函数代码
2012/04/11 PHP
5种PHP创建数组的实例代码分享
2014/01/17 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
js技巧--转义符&quot;\&quot;的妙用
2007/01/09 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
移动端js图片查看器
2016/11/17 Javascript
js实现交通灯效果
2017/01/13 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
小程序hover-class点击态效果实现
2019/02/26 Javascript
Vue3不支持Filters过滤器的问题
2020/09/24 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python3.5绘制随机漫步图
2018/08/27 Python
用Python写一个自动木马程序
2019/09/17 Python
python 实现绘制整齐的表格
2019/11/18 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
用C或者C++语言实现SOCKET通信
2015/02/24 面试题
利用指针变量实现队列的入队操作
2012/04/07 面试题
家长对小学生的评语
2014/01/28 职场文书
服装设计专业求职信
2014/06/16 职场文书
设计专业自荐信
2014/06/19 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
2014年党员个人剖析材料
2014/10/08 职场文书
公务员考察材料范文
2014/12/23 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
被委托人身份证明
2015/08/07 职场文书
导游词之西递宏村
2019/12/10 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
mysql的数据压缩性能对比详情
2021/11/07 MySQL
Nginx限流和黑名单配置
2022/05/20 Servers