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得到某段时间区间的时间戳 php定时任务
Apr 12 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
php生成图形验证码几种方法小结
Aug 15 PHP
PHP使用ob_start生成html页面的方法
Nov 07 PHP
php一行代码获取文件后缀名实例分析
Nov 12 PHP
smarty内置函数section的用法
Jan 22 PHP
php判断用户是否手机访问代码
Jun 08 PHP
PHP中类属性与类静态变量的访问方法示例
Jul 13 PHP
Smarty3配置及入门语法
Feb 22 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
PHP依赖注入原理与用法分析
Aug 21 PHP
详解laravel passport OAuth2.0的4种模式
Nov 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
坏狼的PHP学习教程之第1天
2008/06/15 PHP
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
php自动注册登录验证机制实现代码
2011/12/20 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
js字符串转换成数字与数字转换成字符串的实现方法
2014/01/08 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
JS对象与json字符串相互转换实现方法示例
2018/06/14 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
vuex存储token示例
2019/11/11 Javascript
用vue写一个日历
2020/11/02 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
深入学习python的yield和generator
2016/03/10 Python
python框架django基础指南
2016/09/08 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
python按修改时间顺序排列文件的实例代码
2019/07/25 Python
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
员工考核管理制度
2014/02/02 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
银行贷款收入证明
2014/10/17 职场文书
公司周年庆寄语
2019/06/21 职场文书
Django migrate报错的解决方案
2021/05/20 Python