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 Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
用php制作简单分页(从数据库读取记录)的方法详解
May 04 PHP
PHP页面实现定时跳转的方法
Oct 31 PHP
PHP会话处理的10个函数
Aug 11 PHP
php实现在站点里面添加邮件发送的功能
Apr 28 PHP
PHP线程的内存回收问题
Jul 08 PHP
php中final关键字用法分析
Dec 07 PHP
PHP中常用的魔术方法
Apr 28 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
Laravel框架查询构造器 CURD操作示例
Sep 04 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 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中函数的形参与实参的问题说明
2010/09/01 PHP
php判断访问IP的方法
2015/06/19 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
微信小程序之下拉列表实现方法解析(附完整源码)
2019/08/23 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
Python操作列表的常用方法分享
2014/02/13 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
简单了解django orm中介模型
2019/07/30 Python
Python实现快速排序的方法详解
2019/10/25 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
HTML5拖拽功能实现的拼图游戏
2018/07/31 HTML / CSS
英国电气世界:Electrical World
2019/09/08 全球购物
软件工程师面试题
2012/06/25 面试题
物业管理毕业生个人的求职信
2013/11/30 职场文书
房产销售经理职责
2013/12/20 职场文书
yy生日主持词
2014/03/20 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
教师节感谢信
2015/01/22 职场文书
工作报告范文
2019/06/20 职场文书
MYSQL 运算符总结
2021/11/11 MySQL
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技