头像

PHP二维数组实现去除重复项的方法【保留各个键值】

2019-02-18 20:04:04 来源:PHP代码   浏览()   评论 ( 0 )   

  这篇文章主要介绍了PHP二维数组实现去除重复项的方法,结合实例形式分析了php保留各个键值的情况下去除重复项的相关操作技巧,需要的朋友可以参考下

  1、 二维数组内部的一维数组因某一个键值不能相同,删除重复项:针对某一个键值来进行去重

$arr 
= array(
     '0'=>array(
          'name'=>'james',
          
'age'=>30,
          ),
     '1'=>array(
          
'name'=>'susu',
          'age'=>26,
          ),
      
'2'=>array(
          'name'=>'james',
          
'age'=>30,
          ),
      'new'=>array(
          
'name'=>'kube',
          'age'=>37,
          ),
      
'list'=>array(
          'name'=>'kube',
          
'age'=>27,
          ),
      );
  print_r($arr);
  function 
second_array_unique_bykey($arr, $key){
  $tmp_arr = array();
  
foreach($arr as $k => $v)
  {
    if(in_array($v[$key], $tmp_arr))  
//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
    {
      unset($arr[$k]); 
//销毁一个变量 如果$tmp_arr中已存在相同的值就删除该值
    }
    else {
      $tmp_arr[$k] = 
$v[$key]; //将不同的值放在该数组中保存
    }
  }
  //ksort($arr); 
//ksort函数对数组进行排序(保留原键值key) sort为不保留key值
  return $arr;
  }
  $key 
='name';
  $arr_key = second_array_unique_bykey($arr,$key);
 
  
print_r($arr_key);


2、 二维数组内部的一维数组中的值不能完全相同,删除其中重复的项:

$arr 
= array(
     '0'=>array(
          'name'=>'james',
          
'age'=>30,
          ),
     '1'=>array(
          
'name'=>'susu',
          'age'=>26,
          ),
      
'2'=>array(
          'name'=>'james',
          
'age'=>30,
          ),
      'new'=>array(
          
'name'=>'kube',
          'age'=>37,
          ),
      
'list'=>array(
          'name'=>'kube',
          
'age'=>27,
          ),
      );
  print_r($arr);
echo 
"<br/>";
function more_array_unique($arr=array()){
  foreach($arr[0] 
as $k => $v){
    $arr_inner_key[]= $k;  //先把二维数组中的内层数组的键值记录在在一维数组中
  
}
  foreach ($arr as $k => $v){
    $v =join(",",$v);  //降维 
用implode()也行
    $temp[$k] =$v;   //保留原来的键值 $temp[]即为不保留原来键值
  }
  
printf("After split the array:<br>");
  print_r($temp);  
//输出拆分后的数组
  echo"<br/>";
  $temp =array_unique($temp);  
//去重:去掉重复的字符串
  foreach ($temp as $k => $v){
    $a = explode(",",$v);  
//拆分后的重组 如:Array( [0] => james [1] => 30 )
    $arr_after[$k]= 
array_combine($arr_inner_key,$a); //将原来的键与值重新合并
  }
  
//ksort($arr_after);//排序如需要:ksort对数组进行排序(保留原键值key) ,sort为不保留key值
  
return$arr_after;
}
$arr_new = more_array_unique($arr); 
//调用去重函数
printf("Duplicate removal of the 
array:<br>");
print_r($arr_new);
echo 
"<br/>";



标签: php
声明:转载请注明来源(PHP代码)并保留原文链接:https://www.phpdaima.com//master-132.html
广告不存在
评论0

后面还有条评论,点击查看>>

温馨提示:为规范评论内容,垃圾评论一律封号...