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 相关文章推荐
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
Oct 09 PHP
mysq GBKl乱码
Nov 28 PHP
PHP文件上传实例详解!!!
Jan 02 PHP
PHP COOKIE设置为浏览器进程
Jun 21 PHP
PHP 简单日历实现代码
Oct 28 PHP
php str_pad() 将字符串填充成指定长度的字符串
Feb 23 PHP
PHP模块 Memcached功能多于Memcache
Jun 14 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
Apr 08 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
PHP通过GD库实现验证码功能示例
Feb 23 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
Jul 12 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连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
PHP+MySQL删除操作实例
2015/01/21 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
jQuery 全选效果实现代码
2009/03/23 Javascript
jQuery Tips 为AJAX回调函数传递额外参数的方法
2010/12/28 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
javascript获取当前的时间戳的方法汇总
2015/07/26 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
Swiper.js实现移动端元素左右滑动
2019/09/08 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
Python入门篇之对象类型
2014/10/17 Python
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
python中requests和https使用简单示例
2018/01/18 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
recorder.js 基于Html5录音功能的实现
2020/05/26 HTML / CSS
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
高中毕业自我鉴定
2013/12/22 职场文书
青年志愿者事迹材料
2014/02/07 职场文书
大学生村官承诺书
2014/03/28 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书