网站地图    收藏   

主页 > php专栏 > php数组查询 >

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

来源:自学PHP网    时间:2014-11-25 21:17 作者: 阅读:次

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

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

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

例1代码如下:

  1. function unique_array_2d($array2D,$stkeep=false,$ndformat=true) 
  2. { 
  3.        // 判断是否保留一级数组键 (一级数组键可以为非数字) 
  4.        if($stkeep) $stArr = array_keys($array2D); 
  5.  
  6.        // 判断是否保留二级数组键 (所有二级数组键必须相同) 
  7.        if($ndformat) $ndArr = array_keys(end($array2D)); 
  8.  
  9.        //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 
  10.        foreach ($array2D as $v){ 
  11.                $v = join(",",$v);  
  12.                $temp[] = $v; 
  13.        } 
  14.  
  15.        //去掉重复的字符串,也就是重复的一维数组 
  16.        $temp = array_unique($temp); 
  17.  
  18.        //再将拆开的数组重新组装 
  19.        foreach ($temp as $k => $v) 
  20.        { 
  21.                if($stkeep) $k = $stArr[$k]; 
  22.                if($ndformat) 
  23.                { 
  24.                        $tempArr = explode(",",$v);  
  25.                        foreach($tempArr as $ndkey => $ndval) $output[$k][$ndArr[$ndkey]] = $ndval; 
  26.                } 
  27.                else $output[$k] = explode(",",$v);  
  28.        } 
  29.  
  30.        return $output; 
  31. } 
  32.  
  33. $array2D = array( 
  34.        'first'=>array('title'=>'1111','date'=>'2222'), 
  35.        'second'=>array('title'=>'1111','date'=>'2222'), 
  36.        'third'=>array('title'=>'2222','date'=>'3333') 
  37. ); 
  38.  
  39. echo "<pre>"; 
  40. print_r(unique_array_2d($array2D,true)); 
  41.  
  42. /** 
  43. * 将二维数组通过指定的 key 去重 
  44. * 
  45. * @param array $arr 要去重的数组 
  46. * @param array $by  指定key去重,该参数不指定将返回 array() 
  47. * @return array 
  48. */ 
  49. function array_multunique($arr,$by = array()) { 
  50.        $temp = array(); 
  51.        foreach($arr as $key => $val) { 
  52.                foreach($by as $v) { 
  53.                        $temp[$key] .= isset($val[$v]) ? $val[$v] : ''; 
  54.                } 
  55.        } 
  56.        return array_intersect_key($arr,array_unique($temp)); 
  57. } 
  58. /*$aa = array (   
  59.    array ('id' => 123, 'name' => '张三' ),    
  60.    array ('id' => 123, 'name' => '李四' ),    
  61.    array ('id' => 124, 'name' => '王五' ),    
  62.    array ('id' => 125, 'name' => '赵六' ),    
  63.    array ('id' => 126, 'name' => '赵六' )    
  64. );   
  65. $key = 'id';   
  66. array_multunique ($aa, array('id')); */ 
  67.  
  68. function array_remove_key($array,$keys){ 
  69.        if (!is_array($array) || !is_array($keys)){ 
  70.                return false; 
  71.        } 
  72.        foreach($array as $t){ 
  73.                foreach($keys as $k){ 
  74.                        unset($t[$k]); 
  75.                } 
  76.                $doc[]=$t; 
  77.        } 
  78.        return $doc; 
  79.  
  80. } 
  81. /*$array = array( 
  82.        '0' => array('a' => 'aaaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeeee')), 
  83.        '1' => array('a' => 'aaaaa', 'b' => 'bbbbb', 'c' => array('d' => 'ddddd', 'e' => 'eeeee')) 
  84. ); 
  85. print_r( array_remove_key($array,array('c')));*/ 
  86.  
  87. function array_remove_key_val(&$a,$b,$c){ 
  88.        foreach ($a as $key=>$value){ 
  89.                if ( isset($value[$b]) && ($value[$b]==$c) ){ 
  90.                        unset($a[$key]); 
  91.                } 
  92.        } 
  93. } 
  94. /*$a=array( 
  95.        array('id'=>1,'num'=>10,'type'=>'news'), 
  96.        array('id'=>2,'num'=>100,'type'=>'pic') 
  97. ); 
  98. print_r( array_remove_key_val($a,"id","1") );*/ 

例2代码如下:

  1. /二维数组去掉重复值 
  2. function array_unique_fb($array2D){ 
  3.      foreach ($array2D as $v){ 
  4.          $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 
  5.          $temp[] = $v; 
  6.      } 
  7.      $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组 
  8.     foreach ($temp as $k => $v){ 
  9.         $temp[$k] = explode(",",$v);   //再将拆开的数组重新组装 
  10.     } 
  11.     return $temp; 
  12. } 
  13.  
  14.  
  15. //二维数组去掉重复值  并保留键值 
  16. function array_unique_fb($array2D){ 
  17.     foreach ($array2D as $k=>$v){ 
  18.         $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 
  19.   $temp[$k] = $v; 
  20.     } 
  21.  $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组 
  22.     foreach ($temp as $k => $v){ 
  23.         $array=explode(",",$v);  //再将拆开的数组重新组装 
  24.   $temp2[$k]["id"] =$array[0];    
  25.   $temp2[$k]["litpic"] =$array[1]; 
  26.   $temp2[$k]["title"] =$array[2]; 
  27.   $temp2[$k]["address"] =$array[3]; 
  28.   $temp2[$k]["starttime"] =$array[4]; 
  29.   $temp2[$k]["endtime"] =$array[5]; 
  30.   $temp2[$k]["classid"] =$array[6]; 
  31.   $temp2[$k]["ename"] =$array[7]; 
  32.  } 
  33.     return $temp2; 
  34. } 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论