Position actuelle: Accueil> Derniers articles> PHP implémente les compétences de déduplication en deux dimensions: utilisez la fonction Array_Unique

PHP implémente les compétences de déduplication en deux dimensions: utilisez la fonction Array_Unique

gitbox 2025-07-18

Comprendre la fonction Array_Unique

Dans PHP, la fonction Array_Unique est utilisée pour supprimer les valeurs en double dans un tableau et renvoyer un nouveau tableau. Pour les tableaux unidimensionnels, cette fonction est très pratique. Cependant, lors du traitement des tableaux bidimensionnels, Array_Unique ne peut pas être appliqué directement, nous devons donc utiliser d'autres méthodes pour implémenter la déduplication bidimensionnelle du tableau. Cet article présentera comment combiner Array_Unique pour réaliser la déduplication de tableaux bidimensionnels.

Problème Contexte

Supposons que nous ayons un tableau bidimensionnel contenant plusieurs sous-réseaux, chacun pouvant avoir des éléments en double. Nous devons supprimer les sous-réseaux en double dans le tableau et en conserver un. Voici un exemple:

 
$fruits = array(
   array("apple", "banana", "orange"),
   array("banana", "grapefruit", "apple"),
   array("kiwi", "grapefruit", "banana")
);

Dans l'exemple ci-dessus, le premier sous-réseau est le même que le deuxième sous-réseau, il faut donc être supprimé. De même, les deuxième et troisième sous-réseaux sont les mêmes, et le résultat final doit être déducteur comme suit:

 
$fruits = array(
   array("apple", "banana", "orange"),
   array("banana", "grapefruit", "apple"),
   array("kiwi", "grapefruit", "banana")
);

Solution

Pour déduir un tableau bidimensionnel, nous pouvons utiliser la fonction Array_Unique en conjonction avec d'autres fonctions PHP. Les étapes spécifiques sont les suivantes:

Convertir un tableau 2D en un tableau 1D

Tout d'abord, nous convertissons un tableau bidimensionnel en un tableau unidimensionnel afin que nous puissions déduir en utilisant Array_Unique. Il peut être implémenté via array_map et call_user_func_array:

 
$flattened = call_user_func_array('array_merge', $fruits);

Ce code utilise Array_merge pour combiner tous les sous-régions dans un tableau unidimensionnel et l'appelle dynamiquement à l'aide de la fonction call_user_func_array.

Utilisez Array_Unique pour la déduplication

Ensuite, nous utilisons Array_Unique pour dédupliquer le tableau unidimensionnel:

 
$unique = array_unique($flattened);

Ce code stocke le résultat après la déduplication dans la variable $ unique.

Convertir un tableau unidimensionnel en un tableau bidimensionnel

Enfin, nous devons reconvertir le tableau unidimensionnel en un tableau bidimensionnel, et nous pouvons utiliser la fonction Array_Chunk pour diviser le tableau:

 
$chunked = array_chunk($unique, count($fruits[0]));

Utilisez la fonction Array_Chunk pour réagir le tableau unidimensionnel en fonction de la longueur de chaque sous-réseau pour obtenir la finale déduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication- déduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-d eduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-d eduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-deduplication-de

Exemple de code complet

Voici l'exemple de code complet:

 
$fruits = array(
   array("apple", "banana", "orange"),
   array("banana", "grapefruit", "apple"),
   array("kiwi", "grapefruit", "banana")
);

$flattened = call_user_func_array('array_merge', $fruits);
$unique = array_unique($flattened);
$chunked = array_chunk($unique, count($fruits[0]));

print_r($chunked);

Exécutez ce code et la sortie est la suivante:

 Array
(
    [0] => Array
        (
            [0] => apple
            [1] => banana
            [2] => orange
        )

    [1] => Array
        (
            [0] => banana
            [1] => grapefruit
            [2] => apple
        )

    [2] => Array
        (
            [0] => kiwi
            [1] => grapefruit
            [2] => banana
        )
)

Résumer

Grâce à la méthode ci-dessus, nous avons utilisé avec succès la fonction Array_Unique pour remixer le tableau bidimensionnel. Tout d'abord, convertissez le tableau bidimensionnel en un tableau unidimensionnel, puis utilisez Array_Unique en déduplicate, et enfin convertissez le réseau unidimensionnel vers le tableau bidimensionnel. Cette méthode est simple et efficace, nous aidant à supprimer rapidement les sous-réseaux en double.

Il convient de noter que Array_Unique ne peut supprimer que les sous-réseaux avec exactement la même valeur. Si vous devez supprimer les sous-réseaux avec la même structure mais différents éléments, un code plus complexe peut être nécessaire pour le gérer. J'espère que cet article peut vous aider à mieux comprendre et appliquer la fonction Array_Unique dans PHP.