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中一个控制字符串输出的函数
Oct 09 PHP
利用static实现表格的颜色隔行显示
Oct 09 PHP
php实现的简单压缩英文字符串的代码
Apr 24 PHP
php 在文件指定行插入数据的代码
May 08 PHP
深入分析PHP引用(&amp;)
Sep 04 PHP
Laravel 4 初级教程之Pages、表单验证
Oct 30 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
Aug 01 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
iis 7下安装laravel 5.4环境的方法教程
Jun 14 PHP
Laravel框架FormRequest中重写错误处理的方法
Feb 18 PHP
Laravel框架模型的创建及模型对数据操作示例
May 07 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
Sep 26 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
最小化数据传输――在客户端存储数据
2006/10/09 PHP
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
Yii框架form表单用法实例
2014/12/04 PHP
Yii快速入门经典教程
2015/12/28 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
php无限极分类实现方法分析
2019/07/04 PHP
鼠标图片振动代码
2006/07/06 Javascript
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
JavaScript按位运算符的应用简析
2014/02/04 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
2017/06/12 jQuery
JavaScript之Date_动力节点Java学院整理
2017/06/28 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
python获取糗百图片代码实例
2013/12/18 Python
python读取浮点数和读取文本文件示例
2014/05/06 Python
Python实现类的创建与使用方法示例
2017/07/25 Python
django加载本地html的方法
2018/05/27 Python
强悍的Python读取大文件的解决方案
2019/02/16 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
环境工程大学生自荐信
2013/10/21 职场文书
历史专业大学生职业生涯规划书
2014/03/13 职场文书
启动仪式策划方案
2014/06/14 职场文书
房地产销售主管岗位职责
2015/02/13 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
MySQL索引失效的典型案例
2021/06/05 MySQL