Maison >développement back-end >tutoriel php >Comment supprimer les doublons d'un tableau à deux dimensions en PHP

Comment supprimer les doublons d'un tableau à deux dimensions en PHP

小云云
小云云original
2017-12-21 14:21:582587parcourir

Cet article présente principalement la méthode de suppression des doublons des tableaux bidimensionnels en PHP.Il analyse les compétences opérationnelles associées à la suppression des doublons lorsque PHP conserve chaque valeur de clé sous forme d'exemples. J'espère que cela pourra aider tout le monde.

Pour le tableau bidimensionnel suivant, il est nécessaire de le dédupliquer :


$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,
          ),
     );

1. tableau à l'intérieur du tableau bidimensionnel Ils ne peuvent pas être exactement les mêmes, supprimez les éléments en double :

Le code est le suivant :


<?php
$arr = array(
     &#39;0&#39;=>array(
          &#39;name&#39;=>&#39;james&#39;,
          &#39;age&#39;=>30,
          ),
     &#39;1&#39;=>array(
          &#39;name&#39;=>&#39;susu&#39;,
          &#39;age&#39;=>26,
          ),
      &#39;2&#39;=>array(
          &#39;name&#39;=>&#39;james&#39;,
          &#39;age&#39;=>30,
          ),
      &#39;new&#39;=>array(
          &#39;name&#39;=>&#39;kube&#39;,
          &#39;age&#39;=>37,
          ),
      &#39;list&#39;=>array(
          &#39;name&#39;=>&#39;kube&#39;,
          &#39;age&#39;=>27,
          ),
      );
printf("Before tranform the array:<br>");  //输出原来的数组
print_r($arr);
echo "<br/>";
function more_array_unique($arr=array()){
  foreach($arr[0] as $k => $v){
    $arr_inner_key[]= $k;  //先把二维数组中的内层数组的键值记录在在一维数组中
  }
  foreach ($arras $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 ($tempas $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/>";
?>

Sortie résultat :


Before tranform the array:  //原来数组
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 ) )
After split the array: //拆分后数组
Array ( [0] => james,30 [1] => susu,26 [2] => james,30 [new] =>kube,37 [list] => kube,27 )
Duplicate removal of thearray: //去重后数组
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [new] => Array ( [name] => kube [age]=> 37 ) [list] => Array ( [name] => kube [age] => 27 ) )

2. Le tableau unidimensionnel à l'intérieur du tableau bidimensionnel ne peut pas être le même car une certaine valeur de clé ne peut pas être la même.

Dédupliquer une certaine valeur clé


<?php
$arr= array(……); //同上的二维数组
functionsecond_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 =&#39;name&#39;;
  $arr_key = second_array_unique_bykey($arr,$key);
  printf("As for the givenkey->%s:<br>",$key);
  print_r($arr_key);
  echo "<br/>";
?>

Résultat de sortie :


As for the given key->name:
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name] => susu [age] => 26 ) [new] => Array ( [name] => kube [age]=> 37 ) )

Recommandations associées :

Méthode javascript pour simuler la sortie de la carte et supprimer les compétences duplicates_javascript

Méthode JavaScript pour fusionner deux tableaux et supprimer les compétences duplicates_javascript

Blog quotidien | Notes sur la suppression des éléments en double des tableaux bidimensionnels en PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn