php array_intersect比array_diff快(附详细的使用说明)
发布时间:2020-12-13 05:56:24 所属栏目:PHP教程 来源:网络整理
导读:如果要求数组 $a 与数组 $b 的差集的个数,应该使用 count($a) - count(array_intersect($a,$b)),而不要用 count(array_diff($a,$b)); 前面要比后者快,在大数组中更为明显。 1.array_intersect函数 array array_intersect ( array $array1,array $array2 [
如果要求数组 $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 " "; |