Position actuelle: Accueil> Derniers articles> Comment utiliser array_change_key_case () combiné avec array_diff_key () pour la comparaison des valeurs clés?

Comment utiliser array_change_key_case () combiné avec array_diff_key () pour la comparaison des valeurs clés?

M66 2025-04-24

Dans PHP, les noms de clés des tableaux sont sensibles à la casse par défaut. Cela signifie que si vous avez deux tableaux, l'un avec les clés de l'utilisateur et de l'autre avec UserId , PHP les considérera comme deux clés différentes. Si vous souhaitez faire les noms de clés du tableau, vous pouvez utiliser array_change_key_case () et array_diff_key () en combinaison.

1. Fonction Introduction

  • array_change_key_case (array $ array, int $ case = case_lower) : convertissez tous les noms de clés du tableau en minuscules ou en majuscules.

  • array_diff_key (array $ array1, array $ array2) : comparez les noms de clés de deux tableaux ou plus et renvoyez ces paires de valeurs clés dans le premier tableau qui ne sont pas dans d'autres tableaux.

En utilisant d'abord array_change_key_case () pour unifier les noms de clés des deux tableaux en minuscules (ou majuscules), vous pouvez utiliser array_diff_key () pour obtenir la comparaison du nom de clé indépendant du cas.

2. Exemple de code

 <?php

// Tableau d&#39;origine
$array1 = [
    'UserID' => 1,
    'UserName' => 'Alice',
    'Email' => 'alice@m66.net',
];

$array2 = [
    'userid' => 2,
    'username' => 'Bob',
    'Phone' => '1234567890',
];

// Convertir les deux touches de réseau en minuscules
$lower1 = array_change_key_case($array1, CASE_LOWER);
$lower2 = array_change_key_case($array2, CASE_LOWER);

// Découvrir $array1 Ceux de $array2 Pas de clés dans(Ignorer le cas)
$diffKeys = array_diff_key($lower1, $lower2);

// Sortir le nom de clé différentiel et la valeur correspondante
print_r($diffKeys);

?>

3. Résultat de sortie

 Array
(
    [email] => alice@m66.net
)

Comme le montre l'exemple ci-dessus, bien que l'utilisateur et le nom d'utilisateur aient des noms de clés différents dans les deux tableaux, la logique de contenu est la même. Après la conversion array_change_key_case () , array_diff_key () les traite comme les mêmes clés. Seul l'e-mail n'apparaît pas dans $ array2 , il est donc conservé.

4. Conseils

  • Si vous devez préserver le format de nom de clé (cas) du tableau d'origine, vous pouvez d'abord utiliser le résultat de la conversion du nom de clé pour comparaison, puis remonter pour extraire la valeur de clé correspondante du tableau d'origine.

  • Cette combinaison est idéale pour gérer les données dynamiques saisies par les utilisateurs, telles que la vérification du champ pendant la soumission du formulaire ou la demande d'API.

5. Résumé

En utilisant array_diff_key () après que les noms de clés soient uniformément enveloppés, la logique de comparaison du nom de clé insensible à la cas peut être implémentée avec élégance. Cette méthode est à la fois simple et efficace et est une compétence pratique lorsqu'il s'agit de la comparaison des données multi-source.