Position actuelle: Accueil> Derniers articles> Utilisez array_flip () et array_intersect_key () pour effectuer un filtrage du tableau

Utilisez array_flip () et array_intersect_key () pour effectuer un filtrage du tableau

M66 2025-05-14

Dans le développement quotidien de PHP, nous devons souvent filtrer les tableaux en fonction de certaines «clés de liste blanche» ou des «clés de liste noire». Les fonctions array_flip () et array_intersect_key () fournies par PHP peuvent réaliser cette exigence très efficacement. Cet article utilisera des exemples de code spécifiques pour introduire comment utiliser ces deux fonctions pour terminer la tâche de filtrage du tableau.

1. Fonction Introduction

1. Array_flip ()

Cette fonction est utilisée pour échanger des clés et des valeurs dans un tableau.

 array_flip(array $array): array
  • Entrée: un tableau.

  • Sortie: Le tableau après la paire de valeurs de clé est retourné (Remarque: La valeur du tableau d'origine doit être unique et peut être utilisée comme valeur scalaire pour la clé).

2. Array_INTERSECT_KEY ()

Cette fonction est utilisée pour retourner des éléments dans le tableau où toutes les clés existent également dans un autre tableau.

 array_intersect_key(array $array, array ...$arrays): array
  • Entrée: deux tableaux ou plus.

  • Sortie: uniquement des éléments du premier tableau qui apparaissent dans tous les tableaux suivants en même temps.

2. Exemples de scénarios d'utilisation

Filtrez les champs d'entrée de l'utilisateur, en gardant uniquement les clés autorisées

Supposons que nous recevons les données suivantes du formulaire utilisateur:

 $userInput = [
    'username' => 'john_doe',
    'password' => '123456',
    'email' => 'john@example.com',
    'token' => 'abcd1234',  // Champs illégaux
];

Nous voulons seulement garder les trois champs «nom d'utilisateur» , «mot de passe» et «e-mail» , et les autres doivent être filtrés.

Utilisez array_flip () + array_intersect_key () pour implémenter le filtrage:

 $allowedKeys = ['username', 'password', 'email'];

// Modifier les touches autorisées aux noms des clés
$allowedKeysFlipped = array_flip($allowedKeys);

// Obtenez l'intersection,Gardez les champs avec la même clé
$filteredInput = array_intersect_key($userInput, $allowedKeysFlipped);

print_r($filteredInput);

Résultat de sortie:

 Array
(
    [username] => john_doe
    [password] => 123456
    [email] => john@example.com
)

De cette façon, nous pouvons filtrer les tableaux de manière flexible et en toute sécurité, en évitant les champs illégaux qui continuent d'être traités ou même écrits dans la base de données.

3. Développez l'utilisation: Filtrez les paramètres de l'API

Supposons que vous ayez développé une interface API et recevez les paramètres URL suivants:

 https://m66.net/api/user/update?username=jane&password=78910&is_admin=1

Vous ne voulez pas que le client modifie les champs sensibles tels que IS_ADMIN à volonté et mettent uniquement à mettre à jour le nom d'utilisateur et le mot de passe .

Vous pouvez faire ceci:

 $input = $_GET;

$allowed = ['username', 'password'];

$safeInput = array_intersect_key($input, array_flip($allowed));

// Maintenant $safeInput Ne contient que des champs autorisés

Cette méthode peut facilement implémenter le mécanisme de liste blanche des paramètres d'API et améliorer la sécurité.

4. Résumé

En combinant array_flip () et array_intersect_key () , nous pouvons implémenter les opérations de filtrage clés des tableaux très commodément. Cette approche est non seulement concise dans le code et les performances élevées, mais aussi facile à entretenir. Il convient au traitement de formulaire, au filtrage des paramètres de l'API et à d'autres scénarios.

Dans le développement réel, il est recommandé d'encapsuler cette logique en une fonction, par exemple:

 function filter_array_keys(array $data, array $allowedKeys): array {
    return array_intersect_key($data, array_flip($allowedKeys));
}

De cette façon, votre code sera plus modulaire et lisible.