php中数组的交集,并集,以及去除数组的重复项
本文章总结了php中数组的交集,并集,以及去除数组的重复项,以及从小到大排序函数,几乎都是对数组的操作有需要的朋友可参考参考.
PHP实例代码如下:
<?php //两个数组的并集 $arr1 = array('a','b','c','d','e','f'); //$arr2 = array('a','a','e','a','p','a','a','e'); $arr2 = array('a','a','a','a'); $ilength = count($arr1); $jlength = count($arr2); /** * 两个数组的交集 * @param array $arr1 * @param array $arr2 * @autho zhaoya * @return array $arr */ function jiaoji($arr1, $arr2) { $ilength = count($arr1); $jlength = count($arr2); for ($i = 0; $i < $jlength; $i++) { for ($j = 0; $j < $ilength; $j++) { if ($arr2[$i] == $arr1[$j]) { $arr[] = $arr2[$i]; break; } } } return $arr; } $arr3 = array(1,10,10,5,90,50,90); $arr4 = array(10,23,50,100,110,80); echo '<pre>'; $time1 = microtime(); /*$arr3 = __deleterepeat($arr3); $arr4 = __deleterepeat($arr4); $arr5 = bingji($arr3,$arr4); $arrsort = sort_array($arr5);*/ ///经过实验证明 先并集,然后在去除重复值 ,再排序,这样的速度会快一些 ///而先删除 两个数组的重复值,在并集,在排序的话,这样的速度慢点 $arr5 = bingji($arr3, $arr4); $arr5 = __deleterepeat($arr5); $arrsort = sort_array($arr5); $time2 = microtime(); echo $time1, '<hr>'; echo $time2, '<hr>'; echo $time2 - $time1; print_r($arrsort); //去除重复值(第一种方法) //__deleterepeat($arr2); /** * 去除重复值(第一种方法) * @param array $array * @return array $tmparr * @author zhaoya */ function __deleterepeat($array) { $count = count($array); for ($i = 0; $i < $count; $i++) { $change = false; for ($j = $i + 1; $j < $count; $j++) { if ($array[$i] == $array[$j]) { $change = true; break; } } if ($change == false) { $tmparr[] = $array[$i]; } } return $tmparr; } //去除重复的值 第二种方法 $arrayshift = _delrepeat($arr2); $tmparray = array(); /*** * 去除一维数组重复的值 * @param array $arr * @return array $tmparray; * @author zhaoya */ function _delrepeat($arr) { for ($i = 0; $i < count($arr); $i++) { if (inarray($arr[$i], $tmp)) { $tmparray[] = $arr[$i]; } } return $tmparray; } /** * 查找变量是否在这个数组里面 * @param integer $num * @param array $arr * @author zhaoya * @return boolean * */ function inarray($num, $arr) { if ($arr) { for ($i = 0; $i < count($arr); $i++) { if ($arr[$i] == $num) { return false; } return true; } } return true; } /** * 两个数组的并集 * @param array $arr1 数组1 * @param array $arr2 数组2 * @author zhaoya * @return array $arr1 */ function bingji($arr1, $arr2) { $ilength = count($arr1); $jlength = count($arr2); for ($i = 0; $i < $jlength; $i++) { $change = false; for ($j = 0; $j < $ilength; $j++) { if ($arr2[$i] == $arr1[$j]) { $change = true; break; } } if ($change == false) { $arr1[] = $arr2[$i]; } } return $arr1; } /** * 数组排序 从小到大 * @param array $arr 数组 * @author zhaoya * @return array $arr */ function sort_array($arr) { $length = count($arr); for ($i = 0; $i < $length; $i++) { for ($j = $i + 1; $j < $length; $j++) { if ($arr[$i] > $arr[$j]) { $tmp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $tmp; } } } return $arr; } ?>
本文地址:http://www.phprm.com/shuzu/fs4037.html
转载随意,但请附上文章地址:-)