Position actuelle: Accueil> Derniers articles> Implémentez la logique de liste blanche principale basée sur array_diff_ukey ()

Implémentez la logique de liste blanche principale basée sur array_diff_ukey ()

M66 2025-05-14

Dans le développement quotidien, nous rencontrons souvent la nécessité de garder uniquement la "clé" spécifiée d'un tableau associatif, qui est souvent appelé logique "la liste blanche clé". Bien que nous puissions utiliser array_intersect_key () pour atteindre cet objectif, nous présenterons aujourd'hui une manière légèrement "impopulaire" mais très flexible: utilisez array_diff_ukey () pour implémenter les principaux listes blanches.

Qu'est-ce que Array_Diff_ukey () ?

array_diff_ukey () est une fonction fournie par PHP pour comparer les noms de clés de deux tableaux ou plus et utiliser une fonction de rappel pour déterminer si les noms de clés sont égaux. Cette fonction renvoie une paire de valeurs clés qui existe dans le premier tableau mais n'existe pas dans d'autres tableaux .

La syntaxe est la suivante:

 array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array

Idées de mise en œuvre

Bien que Array_Diff_ukey () soit utilisé pour "exclure" la clé, nous pouvons l'utiliser à son tour pour "garder" la clé blanche avec un petit "court". Le principe est le suivant:

  1. Construire un tableau contenant des clés de liste blanche (peut être un tableau de valeurs nulles);

  2. Inversion de la logique via la fonction de comparaison des touches personnalisées, de sorte que seules les clés dans les tableaux de liste blanche sont conservées;

  3. Utilisez array_diff_ukey () pour "supprimer" les touches qui ne sont pas dans la liste blanche du tableau d'origine.

Exemple de code

Voici un exemple complet, en supposant que nous avons un tableau de données $ DATA qui soumet le formulaire, et nous voulons simplement préserver les clés «nom d'utilisateur» et «e-mail» :

 <?php

// Données de soumission des utilisateurs simulés
$data = [
    'username' => 'john_doe',
    'email' => 'john@example.com',
    'password' => '123456',
    'redirect' => 'https://m66.net/welcome'
];

// Définir la clé de liste blanche
$whitelistKeys = [
    'username' => true,
    'email' => true,
];

// array_diff_ukey Logique de traitement inversé
$filteredData = array_diff_ukey($data, $whitelistKeys, function ($key1, $key2) {
    // Keys conservés dans la liste blanche
    return $key1 === $key2 ? 0 : -1;
});

// Les supprimer du tableau d&#39;origine“Pas sur la liste blanche”Clés
$cleanData = array_diff_key($data, $filteredData);

// Résultat de sortie
print_r($cleanData);

/*
Résultat de sortie:
Array
(
    [username] => john_doe
    [email] => john@example.com
)
*/
?>

Analyse des avantages

La logique de l'implémentation de la liste blanche clé à l'aide de array_diff_ukey () , bien que légèrement tortueuse, fournit:

  • Flexibilité plus forte : peut implémenter la logique complexe de correspondance des clés, telles que l'ignorance de cas, le traitement des préfixes, etc.;

  • Haute lisibilité (lorsqu'elle est utilisée avec les commentaires);

  • Pas d'effets secondaires : le tableau d'origine ne sera pas modifié.

Scénarios d'application

Vous pouvez encapsuler cette écriture en tant que fonction d'outil pour:

  • Filtre les données soumises par l'utilisateur;

  • Protéger les champs de sécurité de la configuration du système;

  • Contrôle le contenu de sortie de la structure de réponse de l'interface.

résumé

Bien que PHP fournit une variété de méthodes pour manipuler les tableaux, la flexibilité de l'utilisation de fonctions telles que Array_Diff_ukey () nous permet d'implémenter la logique de demande commune de différentes manières. Si vous souhaitez créer un filtre de tableau plus robuste et réutilisable, vous pourriez aussi bien essayer cette idée!