ホームページ >php教程 >php手册 >PHP二维数组去重复项自定义函数

PHP二维数组去重复项自定义函数

WBOY
WBOYオリジナル
2016-06-13 09:50:411030ブラウズ

如果我们是一维数据去重复项就不要说了有直接的函数了,但二维数据php未提供函数了,下面小编来给大家推荐两个不错的二维数组去重复项自定义函数吧。

例1

 代码如下 复制代码


function unique_array_2d($array2D,$stkeep=false,$ndformat=true)
{
       // 判断是否保留一级数组键 (一级数组键可以为非数字)
       if($stkeep) $stArr = array_keys($array2D);

       // 判断是否保留二级数组键 (所有二级数组键必须相同)
       if($ndformat) $ndArr = array_keys(end($array2D));

       //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
       foreach ($array2D as $v){
               $v = join(",",$v);
               $temp[] = $v;
       }

       //去掉重复的字符串,也就是重复的一维数组
       $temp = array_unique($temp);

       //再将拆开的数组重新组装
       foreach ($temp as $k => $v)
       {
               if($stkeep) $k = $stArr[$k];
               if($ndformat)
               {
                       $tempArr = explode(",",$v);
                       foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval;
               }
               else $output[$k] = explode(",",$v);
       }

       return $output;
}

$array2D = array(
       'first'=>array('title'=>'1111','date'=>'2222'),
       'second'=>array('title'=>'1111','date'=>'2222'),
       'third'=>array('title'=>'2222','date'=>'3333')
);

echo "

";<br>
print_r(unique_array_2d($array2D,true));
<p>/**<br>
* 将二维数组通过指定的 key 去重<br>
*<br>
* @param array $arr 要去重的数组<br>
* @param array $by  指定key去重,该参数不指定将返回 array()<br>
* @return array<br>
*/<br>
function array_multunique($arr,$by = array()) {<br>
       $temp = array();<br>
       foreach($arr as $key => $val) {<br>
               foreach($by as $v) {<br>
                       $temp[$key] .= isset($val[$v]) ? $val[$v] : '';<br>
               }<br>
       }<br>
       return array_intersect_key($arr,array_unique($temp));<br>
}<br>
/*$aa = array (  <br>
   array ('id' => 123, 'name' => '张三' ),   <br>
   array ('id' => 123, 'name' => '李四' ),   <br>
   array ('id' => 124, 'name' => '王五' ),   <br>
   array ('id' => 125, 'name' => '赵六' ),   <br>
   array ('id' => 126, 'name' => '赵六' )   <br>
);  <br>
$key = 'id';  <br>
array_multunique ($aa, array('id')); */</p>
<p>function array_remove_key($array,$keys){<br>
       if (!is_array($array) || !is_array($keys)){<br>
               return false;<br>
       }<br>
       foreach($array as $t){<br>
               foreach($keys as $k){<br>
                       unset($t[$k]);<br>
               }<br>
               $doc[]=$t;<br>
       }<br>
       return $doc;</p>
<p>}<br>
/*$array = array(<br>
       '0' => array('a' => 'aaaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeeee')),<br>
       '1' => array('a' => 'aaaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeeee'))<br>
);<br>
print_r( array_remove_key($array,array('c')));*/</p>
<p>function array_remove_key_val(&$a,$b,$c){<br>
       foreach ($a as $key=>$value){<br>
               if ( isset($value[$b]) && ($value[$b]==$c) ){<br>
                       unset($a[$key]);<br>
               }<br>
       }<br>
}<br>
/*$a=array(<br>
       array('id'=>1,'num'=>10,'type'=>'news'),<br>
       array('id'=>2,'num'=>100,'type'=>'pic')<br>
);<br>
print_r( array_remove_key_val($a,"id","1") );*/</p>


例2

 

 代码如下 复制代码

/二维数组去掉重复值
function array_unique_fb($array2D){
     foreach ($array2D as $v){
         $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
         $temp[] = $v;
     }
     $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组
    foreach ($temp as $k => $v){
        $temp[$k] = explode(",",$v);   //再将拆开的数组重新组装
    }
    return $temp;
}


//二维数组去掉重复值  并保留键值
function array_unique_fb($array2D){
    foreach ($array2D as $k=>$v){
        $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
  $temp[$k] = $v;
    }
 $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组
    foreach ($temp as $k => $v){
        $array=explode(",",$v);  //再将拆开的数组重新组装
  $temp2[$k]["id"] =$array[0];  
  $temp2[$k]["litpic"] =$array[1];
  $temp2[$k]["title"] =$array[2];
  $temp2[$k]["address"] =$array[3];
  $temp2[$k]["starttime"] =$array[4];
  $temp2[$k]["endtime"] =$array[5];
  $temp2[$k]["classid"] =$array[6];
  $temp2[$k]["ename"] =$array[7];
 }
    return $temp2;
}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。