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 ; } ?>查看更多关于php中数组的交集,并集,以及去除数组的重复项 -的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did31163