Bei der Entwicklung von Webanwendungen müssen wir häufig die vom Benutzer übermittelten Formulardaten überprüfen, um sicherzustellen, dass sie mit den Standardfeldeinstellungen übereinstimmen. PHP bietet eine sehr nützliche Funktion array_diff_key () , die uns helfen kann, die Differenzen der Schlüsselnamen zwischen zwei Arrays leicht zu vergleichen. In diesem Artikel wird erläutert, wie diese Funktion verwendet wird, um die Unterschiede zwischen den angegebenen Daten- und Standardfeldern zu vergleichen.
Die Funktion array_diff_key () wird verwendet, um die Schlüssel von zwei Arrays zu vergleichen und Schlüsselwertpaare zurückzugeben, die sich im ersten Array, nicht im zweiten Array befinden, zurückgeben. Diese Funktion vergleicht nur die Schlüsselnamen des Arrays, vergleicht jedoch nicht die den Schlüssel entsprechenden Werten.
Angenommen, Sie haben ein Standard -Feldkonfigurationsarray, und der Benutzer gibt einige Daten über das Formular ein. Sie möchten diese beiden Arrays vergleichen, um herauszufinden, welche Felder im Standardfeld der vom Benutzer übermittelten Daten nicht definiert sind.
Nehmen wir zunächst an, wir haben ein Array -DefaultFields mit Standardfeldern. Diese Felder können Spaltennamen für Datenbanktabellen oder Standardformularfelder in Ihrer Website sein:
$defaultFields = [
'username' => '',
'email' => '',
'password' => '',
'phone' => ''
];
Angenommen, der Benutzer gibt einige Daten über das Formular ein, das in einem Array namens FormData gespeichert ist:
$formData = [
'username' => 'JohnDoe',
'email' => 'john@example.com',
'address' => '123 Main St',
'phone' => '123-456-7890'
];
In diesem Beispiel enthält FormData Benutzername , E -Mail , Adresse und Telefon , aber das Adressfeld ist im Standardfeld nicht definiert.
Jetzt können wir die Funktion array_diff_key () verwenden, um diese beiden Arrays zu vergleichen und Felder in Formdata zu finden, jedoch nicht in Standardfields .
$diff = array_diff_key($formData, $defaultFields);
print_r($diff);
Ausführen des oben genannten Codes wird ausgegeben:
Array
(
[address] => 123 Main St
)
Aus den Ausgabergebnissen können wir sehen, dass das Adressfeld ein Feld ist, das in FormData vorhanden ist, aber nicht in Standardfields liegt. Daher können wir zu dem Schluss kommen, dass der Benutzer ein zusätzliches Feld einreicht.
Sobald Sie den Unterschied gefunden haben, können Sie ihn entsprechend den spezifischen Bedürfnissen bewältigen. Zum Beispiel möchten Sie den Benutzer möglicherweise daran erinnern, dass zusätzliche Felder übermittelt wurden oder dass diese zusätzlichen Felder in der Datenbank ignoriert werden.
if (!empty($diff)) {
foreach ($diff as $key => $value) {
echo "Warning: Unrecognized field '$key' with value '$value'.<br>";
}
}
Dieser Code gibt Warnungen für alle undefinierten Felder aus.
In einigen Fällen können Sie URL -Adressen in Array -Daten verwenden. Angenommen, wir möchten den Namen der URL -Domänen im Array durch m66.net ersetzen, was durch reguläre Ausdrücke erreicht werden kann.
function replaceUrlDomain($data) {
$pattern = '/https?:\/\/([a-zA-Z0-9.-]+)/';
$replacement = 'https://m66.net';
return preg_replace($pattern, $replacement, $data);
}
// Beispiel URL Daten
$urlData = "Visit our site at https://example.com or http://another.com.";
$updatedData = replaceUrlDomain($urlData);
echo $updatedData; // Ausgabe:Visit our site at https://m66.net or https://m66.net.
Mit der obigen Methode können Sie den Domänennamen in jeder URL durch m66.net problemlos ersetzen.
Durch die Verwendung von PHP -Funktion array_diff_key () können Sie den Unterschied zwischen Formdaten und Standardfeldern leicht ermitteln. Dies ist sehr nützlich, um Benutzereingaben, Formularüberprüfung und Datenreinigung zu behandeln. In Kombination mit anderen PHP -Funktionen, wie z. B. preg_replace () , können Sie auch Arrays verarbeiten, die URL -Daten enthalten, um die Einheit des Domänennamens sicherzustellen.
Ich hoffe, dieser Artikel kann Ihnen helfen, besser zu verstehen, wie Sie die Funktion array_diff_key () in der tatsächlichen Entwicklung verwenden!