您好,欢迎访问一九零五行业门户网

分享一個PHP函數,用來找出5個Array的交集_PHP教程

/** 數組碰撞,找出多個數組的重疊值 返回: 重整之後的array,如下: $arr=array( 0=>'', //5個數組重疊的部份 1=>'', //第1個數組去掉[0]的值后 2=>'', //第2個數組去掉[0]的值后 3=>'', //第3個數組去掉[0]的值后 4=>'', //第4個數組去掉[0]的值后 5=>'', //第5個數組去掉[0]的值后 ); 參數: 要重整的5個數組 /**/ public static function jiaoji($arr1,$arr2,$arr3,$arr4,$arr5) { if(!is_array($arr1) or !is_array($arr2) or !is_array($arr3) or !is_array($arr4) or !is_array($arr5)) { throw new exception('error:'.__line__.',參數錯誤!');die(); } $arr=array(); //找出這5個數組中重複的部份,賦值給$arr[0] { //合併數組 $narr=array_merge($arr1,$arr2,$arr3,$arr4,$arr5); //降維 foreach($narr as $v){ $v = implode('`',$v); //降维 $temp[] = $v; }unset($narr); //去重复 $unique_arr = array_unique($temp); //取差集 $repeat_arr = array_diff_assoc($temp,$unique_arr);unset($temp,$unique_arr); //去重複 $repeat_arr=array_unique($repeat_arr); //升維 foreach($repeat_arr as $k=>$v){ $v = explode('`',$v); $v['gid']=$v[0];unset($v[0]); $v['cod']=$v[1];unset($v[1]); $v['tid1']=$v[2];unset($v[2]); $v['tid2']=$v[3];unset($v[3]); $v['stime']=$v[4];unset($v[4]); $temp[] = $v; } $arr[0]=$temp; unset($temp,$repeat_arr); } /** 去掉5個數組中包含$arr[0]的部份 array(5) { [gid]=>string(1) 2 [cod]=>string(4) 4002 [tid1]=>string(3) 184 [tid2]=>string(3) 199 [stime]=>string(19) 2013-07-25 02:19:00 } /**/ $max=max(count($arr1),count($arr2),count($arr3),count($arr4),count($arr5)); foreach($arr[0] as $k=>$v) { for($i=0;$i<$max;$i++) { //去掉arr1和$arr[0]的重複部份 if(isset($arr1[$i])) { if($arr1[$i]['gid']==$v['gid'] and $arr1[$i]['cod']==$v['cod'] and $arr1[$i]['tid1']==$v['tid1'] and $arr1[$i]['tid2']==$v['tid2'] and $arr1[$i]['stime']==$v['stime']) { unset($arr1[$i]); } } //去掉arr2和$arr[0]的重複部份 if(isset($arr2[$i])) { if($arr2[$i]['gid']==$v['gid'] and $arr2[$i]['cod']==$v['cod'] and $arr2[$i]['tid1']==$v['tid1'] and $arr2[$i]['tid2']==$v['tid2'] and $arr2[$i]['stime']==$v['stime']) { unset($arr2[$i]); } } //去掉arr3和$arr[0]的重複部份 if(isset($arr3[$i])) { if($arr3[$i]['gid']==$v['gid'] and $arr3[$i]['cod']==$v['cod'] and $arr3[$i]['tid1']==$v['tid1'] and $arr3[$i]['tid2']==$v['tid2'] and $arr3[$i]['stime']==$v['stime']) { unset($arr3[$i]); } } //去掉arr4和$arr[0]的重複部份 if(isset($arr4[$i])) { if($arr4[$i]['gid']==$v['gid'] and $arr4[$i]['cod']==$v['cod'] and $arr4[$i]['tid1']==$v['tid1'] and $arr4[$i]['tid2']==$v['tid2'] and $arr4[$i]['stime']==$v['stime']) { unset($arr4[$i]); } } //去掉arr5和$arr[0]的重複部份 if(isset($arr5[$i])) { if($arr5[$i]['gid']==$v['gid'] and $arr5[$i]['cod']==$v['cod'] and $arr5[$i]['tid1']==$v['tid1'] and $arr5[$i]['tid2']==$v['tid2'] and $arr5[$i]['stime']==$v['stime']) { unset($arr5[$i]); } } } }unset($max); $arr[1]=$arr1;unset($arr1); $arr[2]=$arr2;unset($arr2); $arr[3]=$arr3;unset($arr3); $arr[4]=$arr4;unset($arr4); $arr[5]=$arr5;unset($arr5); return $arr; }
http://www.bkjia.com/phpjc/440321.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/440321.htmltecharticle/**數組碰撞,找出多個數組的重疊值返回:重整之後的array,如下:$arr=array(0='',//5個數組重疊的部份1='',//第1個數組去掉[0]的值后2='',//第2個數組...
其它类似信息

推荐信息