Aktueller Standort: Startseite> Neueste Artikel> Anwendungslogik zur Implementierung der Erkennung von "kürzlich modifizierten Feldern"

Anwendungslogik zur Implementierung der Erkennung von "kürzlich modifizierten Feldern"

M66 2025-06-06

In vielen Entwicklungsanwendungen, insbesondere in Datenbank- und Formularaktualisierungsfunktionen, müssen wir häufig die Erkennung von "kürzlich modifizierten Feldern" durchführen. Einfach ausgedrückt müssen Entwickler zwei Arrays vergleichen und feststellen, welche Felder geändert haben. PHP bietet leistungsstarke integrierte Funktionen, um diese Anforderung zu erreichen.

Die Funktion array_diff_uassoc kann nicht nur verwendet werden, um die Werte von zwei Arrays zu vergleichen, sondern auch gemäß den benutzerdefinierten Vergleichsregeln verarbeitet werden. Im Folgenden werden wir demonstrieren, wie Sie Array_Diff_Uassoc verwenden, um festzustellen, ob sich das Feld durch ein praktisches Anwendungsszenario geändert hat.

1. Verstehen Sie die Funktion array_diff_uassoc

Bevor Sie erklären, wie Sie array_diff_uassoc verwenden, lassen Sie uns kurz verstehen, wie es funktioniert. Array_Diff_Uassoc wird verwendet, um die Differenz zwischen zwei Arrays zu berechnen, ähnlich wie bei array_diff_assoc . Sie können jedoch definieren, wie Schlüssel und Werte durch eine Rückruffunktion verglichen werden.

Funktionsdefinition:

 array_diff_uassoc ( array $array1 , array $array2 , callable $value_compare_func ) : array
  • $ Array1 : Das erste Array.

  • $ array2 : Das zweite Array.

  • $ value_compare_func : Eine Rückruffunktion zum Vergleich von Array -Elementen. Die Funktion muss zwei Parameter akzeptieren, einen Ganzzahlwert zurückgeben und die Beziehung zwischen den beiden Werten bestimmen (gleich 0, zuerst ist der zweite ein positiver Wert, und zweitens ist größer als der erste ist ein negativer Wert).

2. Anwendungsszenario: Erkennen Sie "aktuelle modifizierte Felder"

Angenommen, wir haben ein Benutzerinformationsformular, das Benutzerinformationen über die Weboberfläche aktualisiert. In diesem Prozess müssen wir wissen, welche Felder geändert wurden.

Datenbeispiel:

Wir haben zwei Arrays, die die Informationen des Benutzers vor und nach dem Einreichen des Formulars darstellen:

 // Rohdaten:Informationen vor der Einreichung
$oldData = [
    'name' => 'John Doe',
    'email' => 'johndoe@m66.net',
    'age' => 25,
    'address' => '123 Main Street'
];

// Daten nach Einreichung:Benutzer modifizierte Informationen
$newData = [
    'name' => 'John Doe',
    'email' => 'johndoe@m66.net',
    'age' => 26,  // Verändert
    'address' => '123 Main Street'
];

Unser Ziel ist es, festzustellen, welche Felder in $ newdata im Vergleich zu OldData geändert haben. In diesem Szenario ändert sich das E -Mail -Feld nicht, sondern das Altersfeld ändert sich.

3.. Verwenden Sie Array_Diff_Uassoc zur Erkennung

 // Definieren Sie eine Vergleichs -Rückruffunktion
function customCompare($a, $b) {
    return strcmp($a, $b);
}

// verwendenarray_diff_uassocUnterschiede erkennen
$changedFields = array_diff_uassoc($newData, $oldData, 'customCompare');

// 输出Verändert的字段
print_r($changedFields);

In diesem Beispiel verwendet die CustomCompare -Funktion STRCMP , um zwei Zeichenfolgen (oder andere Arten von Daten) zu vergleichen, und gibt 0 zurück, wenn es gleich ist, was darauf hinweist, dass sich der Feldwert nicht geändert hat. Wenn der Rückgabewert nicht 0 ist, bedeutet dies, dass sich das Feld geändert hat.

Ausgangsergebnis:

 Array
(
    [age] => 26
)

Wie oben gezeigt, enthält das Ausgang $ teamFields -Array nur das Altersfeld , das das einzige Feld ist, das geändert wurde.

4. Zusammenfassung

Die Funktion array_diff_uassoc ist sehr nützlich bei der Erkennung von Feldänderungen. Durch den Vergleich von Schlüsselwertpaaren von zwei Arrays kann es genau ermitteln, welche Felder geändert haben. Durch die Kombination von benutzerdefinierten Vergleichs -Rückruffunktionen können Sie in einer Vielzahl von Szenarien eine flexible und effiziente Differenzerkennung erzielen.

5. CODE CODE -Beispiel

Hier ist ein vollständiges Code -Beispiel, das zeigt, wie "Kürzlich modifizierte Felder" mit Array_Diff_Uassoc erfasst werden:

 <?php
// Rohdaten:Informationen vor der Einreichung
$oldData = [
    'name' => 'John Doe',
    'email' => 'johndoe@m66.net',
    'age' => 25,
    'address' => '123 Main Street'
];

// Daten nach Einreichung:Benutzer modifizierte Informationen
$newData = [
    'name' => 'John Doe',
    'email' => 'johndoe@m66.net',
    'age' => 26,  // Verändert
    'address' => '123 Main Street'
];

// Definieren Sie eine Vergleichs -Rückruffunktion
function customCompare($a, $b) {
    return strcmp($a, $b);
}

// verwendenarray_diff_uassocUnterschiede erkennen
$changedFields = array_diff_uassoc($newData, $oldData, 'customCompare');

// 输出Verändert的字段
print_r($changedFields);
?>