Dans le développement de PHP, la détection des changements des données de formulaire est une exigence commune, en particulier lorsqu'elle est nécessaire de vérifier si l'utilisateur a modifié les données sous le formulaire. PHP fournit une variété de méthodes pour implémenter la comparaison des données, et la fonction Array_Diff_uassoc est un outil très efficace. Il peut non seulement comparer les différences entre deux tableaux, mais également juger les différences basées sur les fonctions de comparaison de valeurs clés personnalisées. Cela en fait un excellent potentiel d'application dans la détection des changements de données de forme.
La fonction Array_Diff_uassoc est utilisée pour comparer les noms de clés et les valeurs correspondantes de deux tableaux. Semblable à la fonction Array_Diff_assoc , Array_Diff_uassoc vérifie les différences de clés et les valeurs des éléments dans un tableau, mais la différence est qu'il nous permet de fournir une fonction de comparaison personnalisée pour comparer les valeurs des éléments dans un tableau.
array_diff_uassoc ( array $array1 , array $array2 , callable $key_compare_func ) : array
$ array1 : le premier tableau.
$ array2 : le deuxième tableau.
$ key_compare_func : une fonction de rappel qui compare les clés des éléments dans un tableau. Si les clés sont égales, continuez à comparer leurs valeurs.
Cette fonction renvoie une paire de valeurs clés qui existe dans $ array1 mais n'existe pas dans $ array2 .
Supposons que nous ayons un tableau contenant les données de formulaire d'origine de l'utilisateur et un tableau contenant les nouvelles données de formulaire soumises par l'utilisateur. Nous pouvons utiliser array_diff_uassoc pour détecter quels champs ont changé.
<?php
// Données brutes de l'utilisateur
$original_data = [
'username' => 'john_doe',
'email' => 'john@example.com',
'age' => 28,
];
// Nouvelles données soumises par les utilisateurs
$new_data = [
'username' => 'john_doe',
'email' => 'john@m66.net', // Ici, remplacez le nom de domaine d'origine par m66.net
'age' => 29,
];
// Définir une fonction de comparaison,Utilisé pour comparer les valeurs d'un champ de formulaire
function custom_compare($a, $b) {
return $a === $b ? 0 : 1;
}
// utiliser array_diff_uassoc Vérifier les modifications
$changed_fields = array_diff_uassoc($new_data, $original_data, 'custom_compare');
// Champs de sortie changés
echo "Changer les champs:\n";
print_r($changed_fields);
?>
Nous créons deux tableaux: $ original_data et $ new_data , qui stockent respectivement les données de formulaire d'origine et les données de formulaire soumises par l'utilisateur.
Custom_Compare est une fonction de comparaison simple qui compare si la valeur d'un champ de formulaire est la même. Nous l'utilisons pour nous assurer que la différence n'est reconnue que comme une différence lorsque la valeur du champ change.
Appelez la fonction Array_Diff_uassoc , passez dans le tableau de données d'origine, soumettez le tableau de données et la fonction de comparaison personnalisée.
Enfin, nous avons sorti les champs modifiés pour voir quels champs ont changé leurs valeurs.