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 相关文章推荐
利用discuz自带通行证整合dedecms的方法以及文件下载
Mar 06 PHP
PHP GD 图像处理组件的常用函数总结
Apr 28 PHP
PHP中设置时区方法小结
Jun 03 PHP
PHP重定向的3种方式
Mar 07 PHP
php生成txt文件标题及内容的方法
Jan 16 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
May 12 PHP
php读取csc文件并输出
May 21 PHP
php判断访问IP的方法
Jun 19 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
Jan 25 PHP
php数据结构之顺序链表与链式线性表示例
Jan 22 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 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
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
2018/07/26 Javascript
小程序云开发实战小结
2018/10/25 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
JavaScript面试中常考的字符串操作方法大全(包含ES6)
2020/05/10 Javascript
Python生成随机验证码的两种方法
2015/12/22 Python
Python3.5运算符操作实例详解
2019/04/25 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
2019/10/14 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
python openpyxl模块的使用详解
2021/02/25 Python
html5 touch事件实现触屏页面上下滑动(二)
2016/03/10 HTML / CSS
保加利亚服装和鞋类购物网站:Bibloo.bg
2020/11/08 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
高中毕业生生活的自我评价
2013/12/08 职场文书
养殖项目策划书范文
2014/01/13 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
经贸日语专业个人求职信范文
2014/04/29 职场文书
思想纪律作风整顿剖析材料
2014/10/11 职场文书
《童年的发现》教学反思
2016/02/18 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
golang中的空接口使用详解
2021/03/30 Python
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS