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 相关文章推荐
复杂检索数据并分页显示的处理方法
Oct 09 PHP
用PHP为SHOPEX增加日志功能代码
Jul 02 PHP
php中substr()函数参数说明及用法实例
Nov 15 PHP
Codeigniter检测表单post数据的方法
Mar 21 PHP
CodeIgniter删除和设置Cookie的方法
Apr 07 PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 PHP
腾讯CMEM的PHP扩展编译安装方法
Sep 25 PHP
php自动载入类用法实例分析
Jun 24 PHP
PHP实现获取第一个中文首字母并进行排序的方法
May 09 PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
浅谈PHP匿名函数和闭包
Mar 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
php抓即时股票信息
2006/10/09 PHP
菜鸟学PHP之Smarty入门
2007/01/04 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
thinkphp分页集成实例
2017/07/24 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
Iframe 自适应高度并实时监控高度变化的js代码
2009/10/30 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
javascript操作css属性
2013/12/30 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
详解python和matlab的优势与区别
2019/06/28 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
css3中新增的样式使用示例附效果图
2014/08/19 HTML / CSS
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
超级搞笑检讨书
2014/01/15 职场文书
庆祝教师节活动方案
2014/01/31 职场文书
网络优化专员求职信
2014/05/04 职场文书
模具专业自荐信
2014/05/29 职场文书
研究生导师推荐信
2014/09/06 职场文书
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
解决MySQL报“too many connections“错误
2022/04/19 MySQL