网站地图    收藏   

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

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

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

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

添加评论