En PHP, la déduplication des tableaux est l'une des tâches les plus basiques. Cependant, dans certains cas, nous devons encapsuler des tableaux pour faciliter la réutilisation et la maintenance de notre code. Cet article explique comment utiliser les méthodes de classe pour encapsuler les méthodes de déduplication de tableau.
Tout d'abord, nous devons créer une classe appelée ArrayUtils et ajouter une méthode statique appelée uniqueValues. Cette méthode acceptera un tableau comme paramètre et renverra un tableau dédupliqué. Voici la structure de base de la classe :
class ArrayUtils { public static function uniqueValues($array) { // code here } }
Ensuite, nous devons écrire la logique de déduplication. PHP fournit de nombreuses méthodes pour dédupliquer un tableau, comme l'utilisation de la fonction array_unique(), l'utilisation de boucles et d'instructions conditionnelles, etc. Ici, nous utiliserons les fonctions array_flip() et array_keys() pour implémenter la déduplication. Plus précisément, nous utiliserons la fonction array_flip() pour stocker les valeurs d'un tableau sous forme de clés dans un autre tableau, puis utiliserons la fonction array_keys() pour extraire ces clés en tant que contenu du tableau dédupliqué. Voici le code de la méthode uniqueValues() :
public static function uniqueValues($array) { // use array_flip() and array_keys() to remove duplicate values return array_keys(array_flip($array)); }
Ici, nous utilisons la fonction array_flip() pour convertir les valeurs du tableau en clés et l'utiliser pour créer un nouveau tableau. Étant donné que les clés du tableau doivent être uniques, toutes les valeurs en double sont combinées en une seule clé dans le nouveau tableau. Nous utilisons ensuite la fonction array_keys() pour extraire ces clés en tant que contenu du tableau dédupliqué.
Maintenant, nous pouvons utiliser la méthode uniqueValues() de la classe ArrayUtils pour dédupliquer n'importe quel tableau. Voici un exemple :
// sample input array $fruits = array('apple', 'banana', 'orange', 'apple', 'kiwi', 'kiwi'); // remove duplicates using ArrayUtils $uniqueFruits = ArrayUtils::uniqueValues($fruits); // output unique fruits print_r($uniqueFruits);
Résultat :
Array ( [0] => apple [1] => banana [2] => orange [3] => kiwi )
Comme vous pouvez le constater, les entrées en double ont été supprimées et une seule entrée est incluse.
Enfin, examinons quelques améliorations possibles pour améliorer la lisibilité et la maintenabilité de notre code. Par exemple, nous pouvons ajouter quelques paramètres dans la méthode uniqueValues() pour contrôler les détails de l'opération de déduplication. Par exemple :
public static function uniqueValues($array, $caseInsensitive = false, $preservingKeys = false) { // set flags for case-insensitive and preserving keys $flip = $caseInsensitive ? array_change_key_case($array, CASE_LOWER) : $array; $preserve = $preservingKeys ? 0 : ARRAY_FILTER_USE_KEY; // use array_flip() and array_keys() to remove duplicate values return array_keys(array_filter(array_flip($flip), $preserve)); }
Ici, nous avons ajouté deux paramètres : $caseInsensitive et $preservingKeys. Si $caseInsensitive est vrai, les opérations de déduplication dans les tableaux ne sont pas sensibles à la casse. Si $preservingKeys est vrai, le tableau renvoyé conservera les clés du tableau d'entrée d'origine.
Nous utilisons la fonction array_change_key_case() pour convertir la casse des clés du tableau en minuscules afin d'obtenir une déduplication insensible à la casse. Nous transmettons également le paramètre $preservingKeys à la fonction array_filter() pour filtrer les éléments qui n'ont pas besoin d'être conservés.
En résumé, l'utilisation de méthodes de classe pour encapsuler les méthodes de déduplication de tableau peut améliorer la réutilisabilité et la maintenabilité du code. En ajoutant des paramètres et une gestion des détails, nous pouvons rendre le code plus flexible et sophistiqué.
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!