In der Webentwicklung sind Benutzerpräferenzen ein häufiges Bedürfnis für Anwendungen, insbesondere in sozialen Plattformen oder E-Commerce-Websites. Benutzer können in der Regel die Funktionen, Schnittstellen- oder Benachrichtigungseinstellungen der Anwendung entsprechend ihren Anforderungen anpassen. Wenn Benutzer ihre Einstellungen aktualisieren, benötigen Entwickler eine Möglichkeit, Unterschiede zwischen alten und neuen Einstellungen zu erkennen, um Änderungen aufzuzeichnen, das Benutzerverhalten zu analysieren oder Referenzen für nachfolgende Operationen zu liefern.
In PHP ist die Funktion array_diff_assoc ein sehr praktisches Instrument zum Vergleich von zwei Arrays und der Rückgabe ihrer Unterschiede. Diese Funktion vergleicht nicht nur die Werte des Arrays, sondern prüft auch, ob die Schlüssel des Array übereinstimmen. Daher kann Array_diff_assoc uns dabei helfen, die Unterschiede in den Einstellungen der Benutzerpräferenz vor und nach Updates effektiv zu erkennen.
Die Funktion der Funktion array_diff_assoc besteht darin, ein Array mit Schlüsselwertpaaren zurückzugeben, die sich im ersten Array, jedoch nicht im zweiten Array befinden. Im Gegensatz zu Array_Diff vergleicht Array_Diff_assoc nicht nur Werte, sondern auch die Unterschiede in den Schlüssel.
array_diff_assoc(array $array1, array $array2) : array
$ array1 : Das erste Array, das man vergleichen sollte.
$ array2 : Das zweite Array, das verglichen werden muss.
Die Funktion gibt ein neues Array zurück, das Schlüsselwertpaare enthält, die in $ array1 und nicht in $ array2 vorhanden sind. Wenn die beiden Arrays auf Werten oder Schlüssel gleich sind, wird kein Unterschied zurückgegeben.
Angenommen, wir haben die alten Vorlieben und neuen Vorlieben eines Benutzers in der App. Hier finden Sie ein einfaches Beispiel:
$oldSettings = [
'theme' => 'dark',
'notifications' => true,
'language' => 'en'
];
$newSettings = [
'theme' => 'light',
'notifications' => false,
'language' => 'fr'
];
Wir können die Funktion array_diff_assoc verwenden, um die Unterschiede zwischen diesen beiden Einstellungsarrays zu vergleichen:
$differences = array_diff_assoc($oldSettings, $newSettings);
print_r($differences);
Array
(
[theme] => dark
[notifications] => 1
[language] => en
)
Der obige Code gibt ein Array zurück, das Schlüsselwertpaare enthält, die in $ oldSettings , aber nicht in $ Newsettings vorhanden sind. Mit diesen Informationen können wir deutlich erkennen, welche Präferenzen sich geändert haben.
Das Thema änderte sich von 'Dunkel' zu 'Licht' .
Benachrichtigungen änderten sich von treu zu falsch .
Die Sprache änderte sich von 'EN' zu 'FR' .
Angenommen, wir möchten Änderungen der Benutzerpräferenzen für die anschließende Analyse oder für die Erzeugung von Benutzerverhaltensberichten aufzeichnen. Die Differenzinformationen können in der Datenbank gespeichert werden oder ein Änderungsprotokoll kann generiert werden. Der Code ist wie folgt:
$differences = array_diff_assoc($oldSettings, $newSettings);
if (!empty($differences)) {
// Nehmen wir an, wir haben eine Protokollierungsfunktion, um Änderungen in den Einstellungen der Benutzerpräferenz aufzuzeichnen
logPreferenceChange($userId, $differences);
}
function logPreferenceChange($userId, $changes) {
// Angenommen, Veränderungen werden in irgendeiner Weise gespeichert
echo "Benutzer {$userId} Die Vorlieben haben sich geändert:\n";
print_r($changes);
}
In einigen Szenarien können Benutzerpräferenzen URL -Links beinhalten. Angenommen, wir haben die folgenden URL -Felder, die verglichen werden müssen:
$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'
];
Wir können den Teil des URL -Domainnamens in den alten und neuen Einstellungen durch einen einheitlichen Domainnamen wie M66.NET ersetzen, um Fehleinschätzungen zu vermeiden, die durch verschiedene Domain -Namen verursacht werden. Das Folgende ist der Implementierungscode: