Heim  >  Artikel  >  Backend-Entwicklung  >  Methoden zur Deduplizierung in zwei verschiedenen Situationen in zweidimensionalen PHP-Arrays

Methoden zur Deduplizierung in zwei verschiedenen Situationen in zweidimensionalen PHP-Arrays

不言
不言Original
2018-07-17 13:44:391133Durchsuche

Die Deduplizierung zweidimensionaler PHP-Arrays kann in zwei Situationen unterteilt werden: Die eine besteht darin, dass die Werte im eindimensionalen Array innerhalb des zweidimensionalen Arrays nicht genau gleich sein können und doppelte Elemente gelöscht werden eindimensionales Array innerhalb des zweidimensionalen Arrays. Da ein bestimmter Schlüsselwert im Array nicht identisch sein kann, werden doppelte Elemente gelöscht.

Für das folgende zweidimensionale Array muss es dedupliziert werden:

$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 Die Werte im eindimensionalen Array innerhalb des zweidimensionalen Arrays können nicht genau gleich sein Dasselbe. Löschen Sie die doppelten Elemente:

Der Code lautet wie folgt:

<?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/>";
?>

Ausgabeergebnis:

Vor der Transformation des Arrays: / /Original-Array
Array ( [0] => Array ( [name] => james [age] => 30 ) [1] => Array ([name ] => susu [Alter] => 26 ) [2] => Array ( [name] => james [alter]=> kube [Alter] => 37 ) [list ] =>Array ( [name] => kube [Alter] => 27 ) )
Nach dem Teilen des Arrays: //Das Array nach der Teilung
Array ( [0] => james,30 [1] => susu,26 [2] => james,30 [new] =>kube,37 [list] => kube,27 )
Duplikatentfernung des Arrays: //Array nach Duplikatentfernung
Array ( [0] => Array ([Name] => james [Alter] => 30) [1] => Array ([Name] => susu [Alter] => 26) [neu] => ( [name] => kube [age] => 37 ) [list] => Array ( [name] => kube [age] => 27 ) )

2 -dimensionales Array innerhalb des zweidimensionalen Arrays hängt von einem bestimmten Schlüsselwert ab. Kann nicht gleich sein, Duplikate löschen:

/*Deduplizierung für einen bestimmten Schlüsselwert*/

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";
?>

Ausgabe Ergebnis:

Wie für den angegebenen Schlüssel->Namen:
Array ( [0] => Array ( [name] => james [age] => 30 ) [ 1] => Array ([name] => susu [Alter] => 26 ) [neu] => Array ( [name] => kube [Alter]=> 37 ) )

Verwandte Empfehlungen:

PHP-Methoden zum Zusammenführen und Deduplizieren eindimensionaler Arrays

Das obige ist der detaillierte Inhalt vonMethoden zur Deduplizierung in zwei verschiedenen Situationen in zweidimensionalen PHP-Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn