Il existe deux meilleures façons de dédupliquer des tableaux et de conserver les noms de clés en PHP : array_unique() : il peut dédupliquer mais pas conserver les noms de clés et réindexer le tableau. Fonction personnalisée array_unique_preserve_keys() : utilisez des valeurs de hachage pour comparer les valeurs, ce qui peut supprimer les doublons et conserver les noms de clés.
La meilleure façon de dédupliquer des tableaux tout en conservant les noms de clés en PHP
En PHP, la déduplication de tableau signifie supprimer les valeurs en double tout en gardant les noms de clés inchangés. Ceci est utile lorsque vous travaillez avec des données provenant de différentes sources pouvant contenir des éléments en double, par exemple provenant de plusieurs soumissions de formulaires ou de requêtes de base de données.
Méthode 1 : la fonction array_unique()
array_unique() est une fonction PHP intégrée utilisée pour dédupliquer les tableaux. Il accepte un tableau en entrée et renvoie un nouveau tableau dans lequel les valeurs en double ont été supprimées. Cependant, array_unique() ne conserve pas les noms de clés, mais réindexe le tableau en commençant à 0.
Exemple :
$arr = ['a', 'b', 'c', 'c', 'd', 'e', 'a']; $result = array_unique($arr); print_r($result); // 输出:['a', 'b', 'c', 'd', 'e']
Méthode 2 : Fonction personnalisée
Afin de conserver les noms de clés, nous pouvons écrire une fonction personnalisée pour dédupliquer le tableau. Cette méthode utilise un tableau associatif et compare le hachage de chaque valeur pour déterminer s'il s'agit d'un doublon.
Exemple :
function array_unique_preserve_keys($arr) { $hash = []; $unique_arr = []; foreach ($arr as $key => $value) { $hash_value = md5($value); if (!isset($hash[$hash_value])) { $hash[$hash_value] = 1; $unique_arr[$key] = $value; } } return $unique_arr; } $arr = ['a', 'b', 'c', 'c', 'd', 'e', 'a']; $result = array_unique_preserve_keys($arr); print_r($result); // 输出:['a' => 'a', 'b' => 'b', 'c' => 'c', 'd' => 'd', 'e' => 'e']
Exemple pratique :
Disons que nous avons un tableau provenant d'une soumission de formulaire qui contient des noms d'utilisateur et des adresses e-mail en double. En le dédupliquant à l'aide de la fonction array_unique_preserve_keys(), nous pouvons supprimer les enregistrements en double tout en conservant le nom d'utilisateur de l'utilisateur.
$form_data = [ ['username' => 'john', 'email' => 'john@example.com'], ['username' => 'jane', 'email' => 'jane@example.com'], ['username' => 'john', 'email' => 'john@example.org'], ['username' => 'mark', 'email' => 'mark@example.net'] ]; $unique_users = array_unique_preserve_keys($form_data); print_r($unique_users); // 输出:['john' => ['username' => 'john', 'email' => 'john@example.com'], 'jane' => ['username' => 'jane', 'email' => 'jane@example.com'], 'mark' => ['username' => 'mark', 'email' => 'mark@example.net']]
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!