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+MySql编写聊天室
Oct 09 PHP
PHP高自定义性安全验证码代码
Nov 27 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 PHP
PHP 安全检测代码片段(分享)
Jul 05 PHP
php中的Base62类(适用于数值转字符串)
Aug 12 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
php无序树实现方法
Jul 28 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 PHP
Yii使用技巧大汇总
Dec 29 PHP
微信利用PHP创建自定义菜单的方法
Aug 01 PHP
PHP微信模板消息操作示例
Jun 29 PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 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
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
php数组编码转换示例详解
2014/03/11 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
javascript中数组的定义及使用实例
2015/01/21 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
javascript创建动态表单的方法
2015/07/25 Javascript
JS将滑动门改为选项卡(需鼠标点击)的实现方法
2015/09/27 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
详解angularjs的数组传参方式的简单实现
2017/07/28 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
Python中的ctime()方法使用教程
2015/05/22 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
详解如何使用Python编写vim插件
2017/11/28 Python
pandas object格式转float64格式的方法
2018/04/10 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
2019/04/01 Python
详解python读取image
2019/04/03 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
Java面试题汇总
2015/12/06 面试题
小学音乐教学反思
2014/02/05 职场文书
美术国培研修感言
2014/02/12 职场文书
青春奉献演讲稿
2014/05/08 职场文书
软件工程毕业生自荐信
2014/07/04 职场文书
重温入党誓词主持词
2015/06/29 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书