Die Datenreinigung ist ein wichtiger Bestandteil der Datenanalyse und -verarbeitung und zielt darauf ab, Inkonsistenzen, Fehler oder Duplikationen in den Daten zu beseitigen. In PHP gibt es viele Funktionen, mit denen wir die Datenreinigung implementieren können. Heute konzentrieren wir uns auf zwei Funktionen: Array_diff_assoc () und array_filter () und diskutieren, wie sie eine Rolle bei der Datenreinigung spielen und welche Unterschiede zwischen ihnen sind.
Die Funktion array_diff_assoc () wird verwendet, um Unterschiede zwischen zwei oder mehr Arrays zu vergleichen und ein Element zurückzugeben, das im ersten Array, jedoch nicht in den anderen Arrays, enthalten ist. Im Gegensatz zu Array_Diff () berücksichtigt Array_diff_assoc () die Schlüsselnamen im Array (Schlüsselnamen werden auch am Vergleich teilnehmen). Seine Syntax ist wie folgt:
array_diff_assoc(array $array1, array $array2, array ...$arrays): array
Angenommen, wir haben zwei Arrays und wollen Elemente herausfinden, die im ersten Array existieren, aber nicht im zweiten Array.
$array1 = [
"a" => 1,
"b" => 2,
"c" => 3
];
$array2 = [
"a" => 1,
"b" => 3,
"d" => 4
];
$result = array_diff_assoc($array1, $array2);
print_r($result);
Ausgangsergebnis :
Array
(
[b] => 2
[c] => 3
)
In diesem Beispiel vergleicht Array_diff_assoc () Arrays $ Array1 und $ array2 und gibt Elemente mit unterschiedlichen Schlüsselnamen und Werten zurück. In diesem Beispiel befinden sich die Elemente "B" => 2 und "C" => 3 in Array $ array1 nicht in Array $ array2 , daher wird das folgende Array zurückgegeben.
Wenn wir einige Daten bereinigen müssen, kann uns array_diff_assoc () helfen, einige Daten zu finden, die in mehreren Datenquellen vorhanden sind, aber inkonsistent sind. Angenommen, wir haben zwei Datenquellen, Array1 repräsentiert unseren aktuellen Datenbankdatensatz, und Array2 repräsentiert Daten, die aus der externen API abgerufen wurden. Wir können array_diff_assoc () verwenden, um Datensätze zu finden, die nicht in den aktuellen Daten übereinstimmen.
Die Funktion array_filter () wird verwendet, um Elemente in einem Array zu filtern und Elemente zurückzugeben, die den angegebenen Bedingungen erfüllen. Seine Syntax ist wie folgt:
array_filter(array $array, callable $callback = null, int $mode = 0): array
$ Array : Das Array zum Filter.
$ Callback : Eine Rückruffunktion, mit der bestimmt wird, ob jedes Element die Bedingung erfüllt. Wenn die Rückruffunktion true zurückgibt, wird das Element im Ergebnisarray beibehalten.
$ modus : entscheidet, wie man Schlüsselnamen in einem Array umgeht. Der Standardwert ist 0, was bedeutet, dass der Schlüsselname nicht geändert wird.
Angenommen, wir haben ein Array mit mehreren Zahlen und möchten den Nullwert daraus entfernen.
$array = [1, 0, 2, 3, 0, 4];
$result = array_filter($array, function($value) {
return $value !== 0;
});
print_r($result);
Ausgangsergebnis :
Array
(
[0] => 1
[2] => 2
[3] => 3
[5] => 4
)
In diesem Beispiel entfernt Array_filter () alle Elemente mit einem Wert von 0 aus dem Array, und das Ergebnis ist ein Array ohne Nullwert.
Array_Filter () ist ein gemeinsames Werkzeug bei der Datenreinigung, insbesondere für das Löschen von Null-, Null- oder nicht konformen Begriffen. Angenommen, wir sammeln einige Daten aus einem vom Benutzer eingereichten Formular, in dem einige Felder leer sind, indem wir mit Array_filter () diese ungültigen Daten entfernen können.
Obwohl Array_Diff_assoc () und Array_filter () beide für die Array -Verarbeitung verwendet werden, weisen sie signifikante Unterschiede in den Nutzungsszenarien und -funktionen auf:
Funktionale Unterschiede :
array_diff_assoc () wird hauptsächlich verwendet, um zwei oder mehr Arrays zu vergleichen, um ihre Unterschiede, insbesondere die Unterschiede in Werten und Schlüssellennamen, herauszufinden.
Array_filter () wird verwendet, um Elemente in einem Array basierend auf bestimmten Bedingungen zu filtern und Elemente zu löschen, die den Bedingungen nicht erfüllen.
Anwendungsszenarien :
array_diff_assoc () eignet sich besser zum Vergleichen und Finden von Unterschieden und wird häufig verwendet, um Situationen mehrerer Datenquellen zu behandeln.
Array_filter () eignet sich besser für die Datenfilterung und wird häufig verwendet, um ungültige Daten oder Elemente zu reinigen, die die Kriterien in einem Array nicht erfüllen.
Rückruffunktion :
Array_Filter () ermöglicht es eingehende Rückruffunktionen, um Filterregeln zu definieren, während Array_diff_assoc () keine Rückruffunktionen unterstützt, sondern die Werte und Schlüsselnamen des Array direkt vergleicht.
Verarbeitung von Arrayschlüsselnamen :
array_diff_assoc () berücksichtigt den Schlüsselnamen des Arrays und den entsprechenden Wert.
Array_Filter () behält standardmäßig den Schlüsselnamen des ursprünglichen Arrays bei, aber der Parameter $ modus kann verwendet werden, um zu steuern, ob der Schlüsselname rekonstruiert werden soll.
Angenommen, wir haben zwei Arrays mit doppelten Daten und unerwünschten Elementen. Wir möchten die Datenreinigung durchführen:
$array1 = [
"a" => 1,
"b" => 0,
"c" => 2
];
$array2 = [
"a" => 1,
"b" => 0,
"d" => 3
];
// verwenden array_diff_assoc() Vergleich von zwei Arrays,Finden Sie inkonsistente Elemente
$diff = array_diff_assoc($array1, $array2);
print_r($diff);
// verwenden array_filter() Der Filterwert ist 0 Elemente
$filtered = array_filter($array1, function($value) {
return $value !== 0;
});
print_r($filtered);
Ausgangsergebnis :
Array
(
[b] => 0
[c] => 2
)
Array
(
[a] => 1
[c] => 2
)
Durch die Verwendung von Array_Diff_assoc () und Array_Filter () können wir die Datenreinigung effizient durchführen. array_diff_assoc () eignet sich besser zum Vergleich von Unterschieden zwischen Arrays, insbesondere wenn wir sowohl Schlüsselnamen als auch Werte berücksichtigen müssen. Array_filter () eignet sich zum Filtern von Daten, die bestimmte Bedingungen nicht erfüllen, z. B. Nullwerte oder ungültige Elemente.
In praktischen Anwendungen hängt die zu wählene Funktion von Ihren spezifischen Anforderungen ab. Das Verständnis ihrer Unterschiede und Beherrschen der Verwendung dieser beiden Funktionen kann Ihnen helfen, Daten effizienter zu reinigen und zu verarbeiten.
Verwandte Tags:
array_filter