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实现WEB动态网页静态
Oct 09 PHP
PHP 模拟$_PUT实现代码
Mar 15 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
PHP异常处理浅析
May 12 PHP
一个简单至极的PHP缓存类代码
Oct 23 PHP
PHP简单创建压缩图的方法
Aug 24 PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 PHP
PHP MYSQL简易交互式站点开发
Dec 27 PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 PHP
PHP判断是否微信访问的方法示例
Mar 27 PHP
PHP实现将上传图片自动缩放到指定分辨率,并保持清晰度封装类示例
Jun 17 PHP
php判断/计算闰年的方法小结【三种方法】
Jul 06 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
Fatal error: Call to undefined function curl_init()解决方法
2010/04/09 PHP
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
php控制linux服务器常用功能 关机 重启 开新站点等
2012/09/05 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
Python使用chardet判断字符编码
2015/05/09 Python
python实现串口自动触发工作的示例
2019/07/02 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
html5清空画布方法(三种)
2017/10/16 HTML / CSS
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
24岁生日感言
2014/01/13 职场文书
2014年新生军训方案
2014/05/01 职场文书
主持人演讲稿
2014/05/13 职场文书
小组名称和口号
2014/06/09 职场文书
感谢信的格式
2015/01/21 职场文书
会计求职简历自我评价
2015/03/10 职场文书
2015年小学语文工作总结
2015/05/25 职场文书
金陵十三钗观后感
2015/06/04 职场文书
党小组意见范文
2015/06/08 职场文书
告知书格式
2015/07/01 职场文书
爱护环境建议书
2015/09/14 职场文书