Maison  >  Article  >  développement back-end  >  Comment supprimer les valeurs en double du tableau bidimensionnel php

Comment supprimer les valeurs en double du tableau bidimensionnel php

PHPz
PHPzoriginal
2023-04-26 10:35:083250parcourir

En PHP, la déduplication de tableaux bidimensionnels est un problème relativement courant. Lorsque nous devons effectuer un traitement de données sur un tableau contenant plusieurs dimensions, nous pouvons être confrontés au besoin d'intégrer les valeurs d'une certaine dimension. À ce stade, s'il existe des valeurs en double, elles doivent être dédupliquées pour éviter les problèmes causés par la duplication des données. Cet article explique comment dédupliquer des tableaux bidimensionnels en PHP.

Méthode 1 : Utilisez la fonction array_unique

La fonction array_unique peut être utilisée pour supprimer les valeurs en double dans un tableau et renvoyer un nouveau tableau. Son utilisation est très simple, il suffit de passer le tableau dédupliqué à cette fonction.

Par exemple, pour un tel tableau bidimensionnel :

$arr = array(
    array('name' => 'John', 'age' => 20),
    array('name' => 'Mary', 'age' => 25),
    array('name' => 'John', 'age' => 20),
    array('name' => 'Peter', 'age' => 22),
    array('name' => 'Mary', 'age' => 25)
);

Nous utilisons la fonction array_unique pour supprimer les doublons :

$result = array_unique($arr, SORT_REGULAR);
print_r($result);

Le résultat de sortie est :

Array
(
    [0] => Array
        (
            [name] => John
            [age] => 20
        )

    [1] => Array
        (
            [name] => Mary
            [age] => 25
        )

    [3] => Array
        (
            [name] => Peter
            [age] => 22
        )

)

Vous pouvez voir que les éléments en double ont été supprimés.

Il est à noter que array_unique déduplique toutes les dimensions du tableau par défaut. Si l'on souhaite dédupliquer seulement une des dimensions, un traitement spécial est nécessaire.

Par exemple, si nous souhaitons uniquement supprimer la duplication via la dimension nom, nous pouvons utiliser la méthode suivante :

//遍历二维数组,将name作为键名
foreach($arr as $value){
    $temp_arr[$value['name']] = $value;
}
//去重后,将数组重新按照数字索引重新排序
$temp_arr = array_values($temp_arr);
print_r($temp_arr);

Le résultat de sortie est :

Array
(
    [0] => Array
        (
            [name] => John
            [age] => 20
        )

    [1] => Array
        (
            [name] => Mary
            [age] => 25
        )

    [2] => Array
        (
            [name] => Peter
            [age] => 22
        )

)

Comme vous pouvez le voir, nous utilisons name comme nom de clé pour obtenir uniquement nom L’effet de la déduplication dans une dimension.

Méthode 2 : utilisez la fonction array_reduce

Une autre méthode de déduplication couramment utilisée consiste à utiliser la fonction array_reduce. La fonction array_reduce peut effectuer une opération de réduction sur tous les éléments du tableau et finalement renvoyer une valeur scalaire. Nous pouvons utiliser cette fonction pour dédupliquer des tableaux bidimensionnels.

Par exemple, pour un tableau bidimensionnel comme celui-ci :

$arr = array(
    array('name' => 'John', 'age' => 20),
    array('name' => 'Mary', 'age' => 25),
    array('name' => 'John', 'age' => 20),
    array('name' => 'Peter', 'age' => 22),
    array('name' => 'Mary', 'age' => 25)
);

Nous utilisons la fonction array_reduce pour supprimer les doublons :

//定义一个回调函数,用于去重
function filter_duplicate($carry, $item){
    if(!in_array($item, $carry)){
        $carry[] = $item;
    }
    return $carry;
}

$result = array_reduce($arr, 'filter_duplicate', array());
print_r($result);

Le résultat de sortie est :

Array
(
    [0] => Array
        (
            [name] => John
            [age] => 20
        )

    [1] => Array
        (
            [name] => Mary
            [age] => 25
        )

    [3] => Array
        (
            [name] => Peter
            [age] => 22
        )

)

Vous pouvez voir que les éléments en double ont été supprimés.

Il convient de noter que la fonction array_reduce dédupliquera également toutes les dimensions du tableau. Si nous voulons seulement dédupliquer une des dimensions, nous devons effectuer un traitement spécial, similaire à l'utilisation de la fonction array_unique.

Méthode 3 : Utiliser le parcours de boucle

Une autre méthode de déduplication courante consiste à utiliser le parcours de boucle. Cette méthode est plus compliquée, mais elle peut utiliser pleinement les fonctions liées aux tableaux de PHP pour obtenir un traitement de déduplication flexible. Nous pouvons exclure les éléments en double en utilisant la fonction in_array dans une boucle ou en hachant chaque élément.

Par exemple, pour un tel tableau bidimensionnel :

$arr = array(
    array('name' => 'John', 'age' => 20),
    array('name' => 'Mary', 'age' => 25),
    array('name' => 'John', 'age' => 20),
    array('name' => 'Peter', 'age' => 22),
    array('name' => 'Mary', 'age' => 25)
);

Nous pouvons utiliser le code suivant pour supprimer les doublons :

$new_arr = array();
foreach($arr as $value){
    $hash = md5(serialize($value)); //计算一个哈希值
    if(!isset($new_arr[$hash])){
        $new_arr[$hash] = $value; //新元素加入新数组
    }
}
$new_arr = array_values($new_arr); //将新数组重新按照数字索引重新排序
print_r($new_arr);

Le résultat de sortie est :

Array
(
    [0] => Array
        (
            [name] => John
            [age] => 20
        )

    [1] => Array
        (
            [name] => Mary
            [age] => 25
        )

    [2] => Array
        (
            [name] => Peter
            [age] => 22
        )

)

Vous pouvez voir que les éléments en double ont été supprimés, et le le nouveau tableau est renuméroté Réorganisation de l'index.

Résumé :

Les trois méthodes courantes de déduplication ci-dessus ont leurs avantages et leurs inconvénients. Vous devez choisir la méthode appropriée en fonction de la situation réelle. Lors du traitement de tableaux bidimensionnels, nous devons suivre le principe « simple et efficace » et utiliser autant que possible les fonctions liées aux tableaux fournies par PHP pour réduire la complexité du code et l'efficacité opérationnelle, et améliorer les performances du programme.

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