Dans le développement Web, les préférences des utilisateurs sont un besoin courant d'applications, en particulier dans les plateformes sociales ou les sites Web de commerce électronique. Les utilisateurs peuvent généralement ajuster les fonctions, l'interface ou les paramètres de notification de l'application en fonction de leurs besoins. Lorsque les utilisateurs mettent à jour leurs préférences, les développeurs ont besoin d'un moyen de détecter les différences entre les paramètres anciens et nouveaux afin d'enregistrer les modifications, d'analyser le comportement des utilisateurs ou de fournir une référence pour les opérations ultérieures.
Dans PHP, la fonction Array_Diff_assoc est un outil très pratique pour comparer deux tableaux et retourner leurs différences. Cette fonction compare non seulement les valeurs du tableau, mais vérifie également si les clés du tableau correspondent. Par conséquent, Array_Diff_assoc peut nous aider efficacement à détecter les différences dans les paramètres de préférence des utilisateurs avant et après les mises à jour.
La fonction de la fonction Array_Diff_assoc est de renvoyer un tableau contenant des paires de valeurs clés qui sont dans le premier tableau mais pas dans le deuxième tableau. Contrairement à Array_Diff , Array_Diff_assoc compare non seulement les valeurs, mais considère également les différences de clés.
array_diff_assoc(array $array1, array $array2) : array
$ array1 : le premier tableau à comparer.
$ array2 : le deuxième tableau qui doit être comparé.
La fonction renvoie un nouveau tableau contenant des paires de valeurs clés qui existent dans $ array1 et non dans $ array2 . Si les deux tableaux sont les mêmes sur les valeurs ou les clés, aucune différence n'est renvoyée.
Supposons que nous ayons les anciennes préférences d'un utilisateur et les nouvelles préférences dans l'application, voici un exemple simple:
$oldSettings = [
'theme' => 'dark',
'notifications' => true,
'language' => 'en'
];
$newSettings = [
'theme' => 'light',
'notifications' => false,
'language' => 'fr'
];
Nous pouvons utiliser la fonction array_diff_assoc pour comparer les différences entre ces deux paramètres Arrays:
$differences = array_diff_assoc($oldSettings, $newSettings);
print_r($differences);
Array
(
[theme] => dark
[notifications] => 1
[language] => en
)
Le code ci-dessus renvoie un tableau contenant des paires de valeurs clés qui existent dans $ oldsettings mais pas dans $ Newsettings . Avec ces informations, nous pouvons clairement voir quelles préférences ont changé.
Le thème est passé de «Dark» à «Light» .
Les notifications sont passées de vraie à false .
La langue est passée de «en» à «fr» .
Supposons que nous voulons enregistrer des changements dans les préférences des utilisateurs pour une analyse ultérieure ou pour la génération de rapports de comportement des utilisateurs. La différence d'informations peut être stockée dans la base de données ou un journal de modification peut être généré. Le code est le suivant:
$differences = array_diff_assoc($oldSettings, $newSettings);
if (!empty($differences)) {
// Supposons que nous ayons une fonction de journalisation pour enregistrer les modifications des paramètres de préférence des utilisateurs
logPreferenceChange($userId, $differences);
}
function logPreferenceChange($userId, $changes) {
// Supposons que les changements sont stockés d'une manière ou d'une autre
echo "utilisateur {$userId} Les préférences ont changé:\n";
print_r($changes);
}
Dans certains scénarios, les préférences des utilisateurs peuvent impliquer des liens URL. Supposons que nous ayons les champs URL suivants qui doivent être comparés:
$oldSettings = [
'profile_url' => 'https://oldsite.com/user/profile',
'dashboard_url' => 'https://oldsite.com/user/dashboard'
];
$newSettings = [
'profile_url' => 'https://newsite.com/user/profile',
'dashboard_url' => 'https://newsite.com/user/dashboard'
];
Nous pouvons remplacer la partie de nom de domaine URL dans les anciens et nouveaux paramètres par un nom de domaine unifié, tel que m66.net , pour éviter une erreur de jugement causée par différents noms de domaine. Ce qui suit est le code d'implémentation: