In PHP sind Array_Diff_key () und Array_Map () zwei häufig verwendete Array -Betriebsfunktionen, mit denen Entwickler Arrays effizienter verarbeiten können. Array_diff_key () wird verwendet, um die Schlüsselnamen eines Arrays zu vergleichen, während array_map () eine Rückruffunktion auf jedes Element des Arrays anwendet. Wenn diese beiden Funktionen in Kombination verwendet werden, können wir Unterschiede in den Arrayschlüsselnamen flexibel behandeln und entsprechende Datenvorgänge ausführen.
Die Funktion array_diff_key () wird verwendet, um die Schlüsselnamen von zwei (oder mehr) Arrays zu vergleichen, die Elemente zurückgeben, die diesen Schlüsselnamen im ersten Array entsprechen, nicht jedoch in den anderen Arrays. Die grundlegende Syntax ist wie folgt:
array_diff_key(array $array1, array $array2, array ...$arrays): array
$ Array1 : Das erste Array.
$ array2 : Andere Arrays, die zum Vergleich verwendet werden.
Diese Funktion gibt ein neues Array zurück, das die in $ array1 vorhandenen Schlüsselnamen enthält, die nicht in $ array2 (oder einem anderen Array) vorhanden sind.
Die Funktion array_map () wird verwendet, um eine Rückruffunktion auf jedes Element im Array anzuwenden und ein neues Array zurückzugeben. Die grundlegende Syntax ist wie folgt:
array_map(callable $callback, array $array, array ...$arrays): array
$ Rückruf : Die Rückruffunktion, die auf jedes Element des Arrays angewendet wird.
$ Array : Das Array zu bedienen.
Die Funktion gibt ein neues Array zurück, jedes Element im Array ist das Ergebnis der Ausführung der Rückruffunktion.
Wenn wir uns mit dem Unterschied in den Schlüsselnamen in einem Array befassen müssen, kann Array_diff_key () uns helfen, verschiedene Schlüsselnamen zwischen zwei Arrays zu finden. Sobald wir den Unterschied gefunden haben, können wir Array_map () verwenden, um die Werte dieser Arrays entsprechend zu verarbeiten.
Angenommen, wir haben zwei Arrays: Einer ist ein vollständiges Array von Benutzerdaten, die andere sind die Daten, die herausgefiltert werden müssen. Wir hoffen, dass wir nach dem Löschen bestimmter Schlüsselnamen die verbleibenden Daten weiter verarbeiten, z. B. Formatierungstermine, Konvertieren von Werten usw.
Hier ist ein Beispielcode, der demonstriert, wie Sie Array_Diff_key () und Array_Map () in Kombination verwenden, um die Unterschiede in den Arrays zu verarbeiten und die entsprechende Datenverarbeitung durchzuführen.
<?php
// Original -Benutzerdatenarray
$userData = [
'id' => 1,
'name' => 'John Doe',
'email' => 'johndoe@example.com',
'dob' => '1990-05-15',
'address' => '123 Main St',
'phone' => '555-1234'
];
// Die Auswahl an Schlüsselnamen, die entfernt werden sollen
$removeKeys = [
'phone' => true,
'address' => true
];
// verwenden array_diff_key() Löschen Sie den angegebenen Schlüsselnamen im Array
$filteredData = array_diff_key($userData, $removeKeys);
// verwenden array_map() Verarbeiten Sie die verbleibenden Daten,Formatdatum
$processedData = array_map(function($value, $key) {
// 假设我们只想Formatdatum(dob)Wert von
if ($key == 'dob') {
return date('Y-m-d', strtotime($value)); // Formatdatum
}
return $value; // Keine Verarbeitung für andere Felder
}, $filteredData, array_keys($filteredData));
// Druckergebnisse
echo '<pre>';
print_r($processedData);
?>
Zunächst definieren wir ein Array $ userData, das Benutzerinformationen enthält, und ein Array $ REMEKEYS , das die zu entfernenden Schlüsselnamen angibt.
Mit der Funktion array_diff_key () entfernen wir den Schlüsselnamen aus dem $ REMEKEYS -Array von $ userData . Dies führt zu einem $ filteredData -Array, das die Schlüsselnamen enthält, die erhalten werden müssen, und deren entsprechende Werte.
Verwenden Sie dann array_map () , um jedes Element im $ filteredData -Array zu verarbeiten. In der Rückruffunktion überprüfen wir jeden Schlüsselnamen, und wenn es sich um "DOB" handelt, formatiert es seinen Wert und konvertiert das Datum in das angegebene Format.
Schließlich verwenden wir Print_r () , um das verarbeitete Array $ processedData auszugeben.
Unter der Annahme, dass ein Wert im Array eine URL enthält, können wir Array_Map () verwenden, um den Domänennamen der URL während der Verarbeitung zu ersetzen. Ersetzen Sie beispielsweise die Domainnamen aller URLs durch m66.net .