php array_intersect比array_diff快(附详细的使用说明)

前端之家收集整理的这篇文章主要介绍了php array_intersect比array_diff快(附详细的使用说明)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

如果要求数组 $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() 例子
<div class="codetitle"><a style="CURSOR: pointer" data="42705" class="copybut" id="copybut42705" onclick="doCopy('code42705')"> 代码如下:
<div class="codebody" id="code42705">
<?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()快五倍
<div class="codetitle"><a style="CURSOR: pointer" data="34419" class="copybut" id="copybut34419" onclick="doCopy('code34419')"> 代码如下:
<div class="codebody" id="code34419">
/*

自定义的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","blue");
$array2 = array("green","red");
echo "
"; 
print_r(my_array_intersect($array1,$array2));
echo "
"; 

array_diff — 计算数组的差集


array array_diff ( array $array1,array $ ... ] )
array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。 #1 array_diff() 例子
<div class="codetitle"><a style="CURSOR: pointer" data="12393" class="copybut" id="copybut12393" onclick="doCopy('code12393')"> 代码如下:
<div class="codebody" id="code12393">
<?PHP
$array1 = array("a" => "green","blue","red");
$array2 = array("b" => "green","red");
$result = array_diff($array1,$array2);
print_r($result);
?>

在 $array1 中多次出现的值一样处理,输出结果为:
<div class="codetitle"><a style="CURSOR: pointer" data="51914" class="copybut" id="copybut51914" onclick="doCopy('code51914')"> 代码如下:
<div class="codebody" id="code51914">
Array
(
[1] => blue
)

Note: 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说,当字符串的表达是一样的时候。 Note: 注意本函数只检查了多维数组中的一维。当然可以用 array_diff($array1[0],$array2[0]); 检查更深的维度。

原文链接:https://www.f2er.com/php/27810.html
array_diffarray_intersect

猜你在找的PHP相关文章