php 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() 例子

$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

{

$temp[]=$arr1[$i];

}

for($i=0;$i

{

$temp[]=$arr2[$i];

}

sort($temp);

$get=array();

for($i=0;$i

{

if($temp[$i]==$temp[$i+1])

$get[]=$temp[$i];

}

return $get;

}

$array1 = array("green", "red", "blue");

$array2 = array("green", "yellow", "red");

echo "

";

print_r(my_array_intersect($array1, $array2));

echo "

"; 
 

array_diff — 计算数组的差集

array array_diff ( array $array1 , array $array2 [, array $ ... ] )

array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。

#1 array_diff() 例子

$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]); 检查更深的维度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值