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 相关文章推荐
《APMServ 5.1.2》使用图解
Oct 23 PHP
介绍几个array库的新函数 php
Dec 29 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
php广告加载类用法实例
Sep 23 PHP
php curl 获取https请求的2种方法
Apr 27 PHP
php实现的mongodb操作类
May 28 PHP
文件上传之SWFUpload插件(代码)
Jul 30 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
Sep 14 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
Dec 21 PHP
PHP判断密码强度的方法详解
May 26 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
在Laravel5.6中使用Swoole的协程数据库查询
Jun 15 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中cookies使用指南
2007/03/16 PHP
php Static关键字实用方法
2010/06/04 PHP
PHP stream_context_create()作用和用法分析
2011/03/29 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
PHP实现变色验证码实例
2014/01/06 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
2014/05/08 PHP
如何让CI框架支持service层
2014/10/29 PHP
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
2015/02/03 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
Linux Centos7.2下安装nodejs&amp;npm配置全局路径的教程
2018/05/15 NodeJs
jQuery解析json格式数据示例
2018/09/01 jQuery
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
详解JavaScript的变量
2019/04/04 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
python3.5绘制随机漫步图
2018/08/27 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
HTML5之tabindex属性全面解析
2016/07/07 HTML / CSS
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
英国最受欢迎的平价女士时装零售商:Roman Originals
2019/11/02 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
比较基础的php面试题及答案-编程题
2012/10/14 面试题
会计系个人求职信范文分享
2013/12/20 职场文书
超市5.1促销活动
2014/01/15 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
2015年读书月活动总结
2015/03/26 职场文书
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS
2022年四月新番
2022/03/15 日漫