Maison  >  Article  >  développement back-end  >  Méthodes de déduplication dans deux situations différentes dans les tableaux PHP bidimensionnels

Méthodes de déduplication dans deux situations différentes dans les tableaux PHP bidimensionnels

不言
不言original
2018-07-17 13:44:391145parcourir

La déduplication de tableau bidimensionnel PHP peut être divisée en deux situations. L'une est que les valeurs du tableau unidimensionnel à l'intérieur du tableau bidimensionnel ne peuvent pas être exactement les mêmes et que les éléments en double sont supprimés. tableau unidimensionnel à l'intérieur du tableau bidimensionnel Étant donné qu'une certaine valeur de clé dans le tableau ne peut pas être la même, les éléments en double sont supprimés.

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 Les valeurs du tableau unidimensionnel à l'intérieur du tableau bidimensionnel ne peuvent pas être. exactement la même chose. 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 :

Avant. transformer le tableau : // Le tableau d'origine
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] = > Tableau ([nom] => susu [âge] => 26 ) [2] => Tableau ( [nom] => james [âge]=> 30 ) [nouveau] => [name] => kube [age] => 37 ) [list] =>Array ( [name] => kube [age] => 27 ) )
Après avoir divisé le tableau : //Après avoir divisé le tableau
Array ( [0] => james,30 [1] => susu,26 [2] => james,30 [new] =>kube,37 [list] => kube,27)
Suppression des doublons du tableau : //Tableau après déduplication
Tableau ( [0] => Tableau ( [nom ] => james [âge] => 30 ) [1] => Tableau ([nom] => susu [âge] => 26 ) [nouveau ] => Tableau ( [nom] => kube [âge]=> 37 ) [liste] => Tableau ( [nom] => kube [âge] => 27 ) )

2. Facteur de tableau unidimensionnel à l'intérieur d'un tableau à deux dimensions Une certaine valeur de clé ne peut pas être la même, supprimez les doublons :

/*Déduplication pour une certaine valeur de clé*/

778e548d6ce61c52a24e04daddb7351e $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);
   printf("As for the givenkey->%s:0c6dc11e160d3b678d68754cc175188a",$key);
   print_r($arr_key);
   echo "076402276aae5dbec7f672f8f4e5cc81";
?>

Résultat de sortie :

Quant à la clé donnée->nom :
Array ( [0] => Array ( [name] => james [age] = > 30 ) [1] => Tableau ( [nom] => susu [âge] => 26 ) [nouveau] => Tableau ( [nom] => kube [âge]=> 37 ) )

Recommandations associées :

Méthodes de fusion et de déduplication de tableaux unidimensionnels 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