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实现像JSP,ASP里Application那样的全局变量
Jan 12 PHP
php中支持多种编码的中文字符串截取函数!
Mar 20 PHP
php下统计用户在线时间的一种尝试
Aug 26 PHP
PHP的array_diff()函数在处理大数组时的效率问题
Nov 27 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
Dec 22 PHP
php+js iframe实现上传头像界面无跳转
Apr 29 PHP
php采用ajax数据提交post与post常见方法总结
Nov 10 PHP
PHP采用get获取url汉字出现乱码的解决方法
Nov 13 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
Jun 12 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
PHP Cli 模式设置进程名称的方法
Jun 12 PHP
PHP7 新增常量
Mar 09 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+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
jQuery实用技巧必备(上)
2015/11/02 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
2017/02/18 Javascript
Vue 监听列表item渲染事件方法
2018/09/06 Javascript
基于Vue的侧边目录组件的实现
2020/02/05 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
[03:38]TI4西雅图DOTA2前线报道 71专访
2014/07/08 DOTA
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
python安装与使用redis的方法
2016/04/19 Python
python安装教程
2018/02/28 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
Python装饰器语法糖
2019/01/02 Python
python制作图片缩略图
2019/04/30 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
广播节目策划方案
2014/05/23 职场文书
放飞梦想演讲稿200字
2014/08/26 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
党校毕业个人总结
2015/02/28 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书