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

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

jacklove
jackloveoriginal
2018-07-05 17:37:251372parcourir

Cet article présente principalement la méthode de suppression des doublons d'un tableau bidimensionnel en PHP.Il analyse les compétences opérationnelles associées à la suppression des doublons lorsque PHP conserve chaque valeur clé sous forme d'exemples.Les amis dans le besoin peuvent s'y référer<.>

L'exemple de cet article décrit la méthode de suppression des doublons d'un tableau bidimensionnel en PHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

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

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

1. Les valeurs du tableau unidimensionnel à l'intérieur du tableau bidimensionnel 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/>";
?>

Résultat de sortie :

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 le tableau bidimensionnel ne peut pas être le même car une certaine valeur de clé ne peut pas être la même, supprimez les doublons :

Dédupliquer une certaine valeur de 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 ) )

PS : Il existe deux outils de déduplication de texte en ligne relativement simples et pratiques sur ce site , dont l'utilisation est recommandée à tous :

Outil de suppression des doublons en ligne :
http://tools.jb51.net /code/quchong

Outils de déduplication de texte en ligne :
http://tools.jb51.net/aideddesign/txt_quchong

Articles qui pourraient vous intéresser :

Un résumé de la façon d'utiliser le comportement Thinkphp5

Un exemple d'ajax+php implémentation de la vérification sans rafraîchissement du numéro de téléphone mobile

Une explication de la méthode d'implémentation simple de lecture et de sortie des données de fichiers XML avec 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