首頁  >  文章  >  php教程  >  php中数组的交集,并集,以及去除数组的重复项,以及从小到大排序程序

php中数组的交集,并集,以及去除数组的重复项,以及从小到大排序程序

WBOY
WBOY原創
2016-06-08 17:24:261214瀏覽

本文章总结了php中数组的交集,并集,以及去除数组的重复项,以及从小到大排序函数,几乎都是对数组的操作有需要的朋友可参考参考。

<script>ec(2);</script>
 代码如下 复制代码
//两个数组的并集
$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  {
     for($j=0;$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 '
';<br>
$time1 = microtime();<br>
 <br>
/*$arr3 = __deleterepeat($arr3);<br>
$arr4 = __deleterepeat($arr4);<br>
$arr5 = bingji($arr3,$arr4);<br>
$arrsort = sort_array($arr5);*/<br>
 <br>
///经过实验证明  先并集,然后在去除重复值 ,再排序,这样的速度会快一些  <br>
///而先删除 两个数组的重复值,在并集,在排序的话,这样的速度慢点<br>
$arr5 = bingji($arr3,$arr4);<br>
$arr5 = __deleterepeat($arr5);<br>
$arrsort = sort_array($arr5);<br>
 <br>
$time2 = microtime();<br>
echo $time1,'<hr>';<br>
echo $time2,'<hr>';<br>
echo $time2-$time1;<br>
 <br>
print_r($arrsort);<br>
//去除重复值(第一种方法)<br>
//__deleterepeat($arr2);<br>
 <br>
 <br>
/**<br>
 * 去除重复值(第一种方法)<br>
 * @param array $array<br>
 * @return array $tmparr<br>
 * @author zhaoya<br>
 */<br>
function __deleterepeat($array)<br>
{<br>
    $count = count($array);<br>
    for($i = 0;$i
    {<br>
        $change = false;<br>
        for($j=$i+1;$j
        {<br>
            if($array[$i] == $array[$j])<br>
            {<br>
                $change=true;<br>
                break;<br>
            }<br>
        }<br>
        if($change==false)<br>
        {<br>
            $tmparr[] = $array[$i];<br>
        }<br>
    }<br>
    return $tmparr;<br>
}<br>
 <br>
 <br>
 <br>
 <br>
 <br>
//去除重复的值 第二种方法<br>
 <br>
$arrayshift = _delrepeat($arr2);<br>
$tmparray=array();<br>
/***<br>
 * 去除一维数组重复的值<br>
 * @param array $arr<br>
 * @return array $tmparray;<br>
 * @author zhaoya<br>
 */<br>
function _delrepeat($arr)<br>
{<br>
    for($i=0;$i<count></count>
    {<br>
        if(inarray($arr[$i],$tmp))<br>
        {<br>
            $tmparray[] = $arr[$i];<br>
        }<br>
    }<br>
    return $tmparray;<br>
}<br>
 <br>
/**<br>
 * 查找变量是否在这个数组里面<br>
 * @param integer $num<br>
 * @param array $arr<br>
 * @author zhaoya<br>
 * @return boolean<br>
 *<br>
 */<br>
function inarray($num,$arr)<br>
{<br>
    if($arr)<br>
    {<br>
        for($i=0;$i<count></count>
        {<br>
            if($arr[$i] == $num)<br>
            {<br>
                return false;<br>
            }<br>
            return true;<br>
        }<br>
    }<br>
    return true;<br>
}<br>
 <br>
 <br>
 <br>
 <br>
 <br>
/**<br>
 * 两个数组的并集<br>
 * @param array $arr1  数组1<br>
 * @param array $arr2  数组2<br>
 * @author zhaoya<br>
 * @return array $arr1<br>
 */<br>
function bingji($arr1,$arr2)<br>
{<br>
 $ilength = count($arr1);<br>
 $jlength = count($arr2);<br>
 for($i=0;$i
 {<br>
     $change=false;<br>
     for($j=0;$j
     {<br>
         if($arr2[$i] == $arr1[$j])<br>
         {<br>
             $change = true;<br>
             break;<br>
         }<br>
     }<br>
     if($change == false)<br>
     {<br>
         $arr1[] = $arr2[$i];<br>
     }<br>
 }<br>
 return $arr1;<br>
}<br>
 <br>
/**<br>
 * 数组排序 从小到大<br>
 * @param array $arr  数组<br>
 * @author zhaoya<br>
 * @return array $arr<br>
 */<br>
function sort_array($arr)<br>
{<br>
 $length = count($arr);<br>
 <br>
 for($i=0;$i
 {<br>
  for($j=$i+1;$j
  {<br>
   if($arr[$i] > $arr[$j])<br>
   {<br>
    $tmp = $arr[$i];<br>
    $arr[$i] = $arr[$j];<br>
    $arr[$j] = $tmp;<br>
   }<br>
  }<br>
 }<br>
 return $arr;<br>
}<br>
 <br>
 <br>
 <br>
 <br>
?>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn