Position actuelle: Accueil> Derniers articles> Utilisez array_diff_uassoc () pour comparer les données soumises par l'utilisateur avec des valeurs par défaut

Utilisez array_diff_uassoc () pour comparer les données soumises par l'utilisateur avec des valeurs par défaut

M66 2025-05-15

Dans PHP, la fonction array_diff_uassoc () est un outil très puissant pour comparer deux tableaux et trouver différentes pièces sur les paires de valeurs clés. Contrairement à array_diff_assoc () , array_diff_uassoc () nous permet de personnaliser la fonction de comparaison des noms de clés, ce qui le rend très utile lors du traitement des données soumises par l'utilisateur avec des valeurs par défaut.

1. Fonction Introduction

La fonction array_diff_uassoc () est utilisée pour comparer les noms de clés de deux tableaux et les valeurs correspondantes, et renvoie un tableau contenant différentes paires de valeurs clés. Sa signature de fonction est la suivante:

 array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
  • $ array1 : le premier tableau, généralement les données soumises par l'utilisateur.

  • $ array2 : le deuxième tableau, généralement la valeur par défaut.

  • $ key_compare_func : une fonction de rappel utilisée pour comparer les touches. Le retour 0 signifie que la clé est la même, et d'autres valeurs signifie que la clé est différente.

2. Exemple de code: comparaison des données soumises par l'utilisateur avec des valeurs par défaut

Supposons que vous développez un formulaire où l'utilisateur soumet des données à la valeur par défaut et découvrez les différences. Voici un exemple de code de la façon d'utiliser array_diff_uassoc () pour implémenter cette fonction:

 <?php
// valeur par défaut
$default_values = [
    'name' => 'John Doe',
    'email' => 'john.doe@m66.net',
    'age' => 30,
];

// Données soumises par l&#39;utilisateur
$user_data = [
    'name' => 'Jane Doe',
    'email' => 'jane.doe@m66.net',
    'age' => 30,
];

// Fonction de comparaison de clés personnalisée
function custom_key_compare($key1, $key2) {
    return strcmp($key1, $key2); // Utiliser la comparaison des chaînes
}

// utiliser array_diff_uassoc Trouvez la différence
$differences = array_diff_uassoc($user_data, $default_values, 'custom_key_compare');

// La différence de sortie
if (!empty($differences)) {
    echo "Découvrez différents éléments de données:\n";
    print_r($differences);
} else {
    echo "Données soumises par l&#39;utilisateur与valeur par défaut完全一致。\n";
}
?>

3. Code d'analyse

  1. Définissez les valeurs par défaut et les données soumises par l'utilisateur :

    • Le tableau $ default_values ​​est les données par défaut du système et les données soumises par l'utilisateur sont stockées dans le tableau $ user_data .

  2. Fonction de comparaison des clés personnalisée :

    • Custom_key_Compare est une fonction que nous définissons pour comparer les clés des tableaux. Ici, nous utilisons la fonction strcmp () pour effectuer des comparaisons de chaînes sur les touches.

  3. Appel array_diff_uassoc () :

    • Nous utilisons la fonction array_diff_uassoc () pour comparer deux tableaux (données utilisateur et valeurs par défaut) et transmettre notre fonction de comparaison de clés personnalisée.

    • Cette fonction renvoie un tableau contenant des paires de valeurs de clé qui diffèrent en noms ou valeurs de clés.

  4. Résultat de sortie :

    • S'il y a une différence, émettez différents éléments de données. Si les deux sont exactement les mêmes, un message rapide est sorti.

4. Application pratique

Supposons que vous créez une page de paramètres de l'utilisateur du site Web et que les données de formulaire soumises par l'utilisateur doivent être comparées à la configuration par défaut du système pour savoir quels éléments ont été modifiés. Avec array_diff_uassoc (), vous pouvez facilement y parvenir sans avoir à écrire beaucoup de logique de comparaison manuellement.

5. Choses à noter

  • Comparaison des noms de clés : array_diff_uassoc () ne comparera que les noms de clés et les valeurs de clés. Si vous souhaitez comparer les valeurs quel que soit le nom de clé, envisagez d'utiliser array_diff () ou array_diff_assoc () .

  • Utilisation des fonctions de rappel : la fonction de rappel KEY_COMPARE_FUNC est très flexible et vous pouvez décider comment comparer les noms de clés en fonction des besoins réels.