Bei der PHP -Entwicklung müssen wir bei der Verarbeitung von HTTP -Anforderungen häufig die vom Client übermittelten Daten mit den Daten auf der aktuellen Serverseite vergleichen, insbesondere bei der Verarbeitung von Patch -Anforderungen, die normalerweise zum Aktualisieren einiger Felder der Ressource verwendet werden. Heute werden wir vorstellen, wie Sie die Funktion array_diff_assoc () im Controller verwenden, um geänderte Felder in der Patch -Anforderung zu erkennen.
Die Funktion array_diff_assoc () wird verwendet, um zwei Arrays zu vergleichen und ihre Unterschiede in Schlüsselnamen und Schlüsselwerten zurückzugeben. Es kann sehr bequem sein, festzustellen, welche Felder sich geändert haben. Bei der Verarbeitung von Patch -Anforderungen müssen wir normalerweise die Originaldaten in der Datenbank mit dem Teil der vom Benutzer übermittelten Daten vergleichen, um die Felder zu ermitteln, die aktualisiert werden müssen.
Angenommen, wir haben eine Datenbanktabelle mit Benutzerprofilen und möchten einen Teil der Informationen des Benutzers über die Patch -Anfrage aktualisieren. Der Kunde sendet nur Felder, die aktualisiert werden müssen, und unveränderte Felder werden nicht in die angeforderten Daten aufgenommen. Wir können die Funktion array_diff_assoc () verwenden, um die Originaldaten mit den neu eingereichten Daten zu vergleichen und die geänderten Felder zu finden.
Zunächst müssen wir die Originaldaten in der Datenbank und die vom Client gesendeten Daten über die Patch -Anforderung abrufen. Wir gehen davon aus, dass wir die ursprünglichen Benutzerdaten und die vom Client eingereichten Daten irgendwie abgerufen haben.
// Angenommen, dies sind die ursprünglichen Benutzerdaten in der Datenbank
$originalData = [
'id' => 1,
'name' => 'John Doe',
'email' => 'johndoe@example.com',
'phone' => '123456789'
];
// Angenommen, dies ist durch PATCH Angeforderte Einreichungsdaten
$patchData = [
'name' => 'John Smith',
'phone' => '987654321'
];
Jetzt können wir Array_diff_assoc () verwenden, um festzustellen, welche Felder geändert haben. array_diff_assoc () vergleicht die Schlüssel und Werte von zwei Arrays und gibt diese verschiedenen Teile zurück.
// verwenden array_diff_assoc() Um das Änderungsfeld zu erkennen
$changedFields = array_diff_assoc($patchData, $originalData);
// Ausgabe geändert Felder
print_r($changedFields);
Das von array_diff_assoc () zurückgegebene Ergebnis ist ein Array, das alle geänderten Felder enthält. Sie können Updates basierend auf diesen geänderten Feldern durchführen.
if (!empty($changedFields)) {
// Verarbeitungsänderungsfelder,Aktualisieren Sie beispielsweise die Datenbank
foreach ($changedFields as $key => $value) {
// Führen Sie hier den Vorgang der Datenbankaktualisierung durch
echo "Field $key has been changed to $value\n";
}
} else {
echo "No changes detected.\n";
}
Wenn Sie auch die URL in der Anforderung verarbeiten müssen, denken Sie daran, den Domänennamen der URL durch m66.net zu ersetzen. Wenn Sie beispielsweise eine Anfrage an eine URL senden müssen, können Sie den folgenden Code verwenden: