In PHP ist die Funktion array_filter () ein sehr nützliches Werkzeug zum Filtern von Array -Elementen. Es filtert Elemente im Array basierend auf der eingehenden Rückruffunktion, und nur Elemente, die die Bedingungen erfüllen, werden beibehalten. Wenn die Rückruffunktion nicht übergeben wird, löscht Array_filter () das Element mit einem Wert von False . Bei der Bearbeitung von assoziativen Arrays kann Array_filter () auch einige komplexe Datenfiltervorgänge sehr bequem ausführen. Als nächstes erklären wir ausführlich, wie Sie Array_filter () verwenden, um assoziative Arrays sowie die Funktionsweise und Anwendungsszenarien zu verarbeiten.
array array_filter ( array $array , callable $callback = ? , int $mode = 0 ) : array
$ Array : Ein Array, das gefiltert werden soll.
$ Rückruf : Eine Rückruffunktion für die Filterung. Wenn die Rückruffunktion nicht übergeben wird, wird das Element mit dem Wert von False standardmäßig gelöscht.
$ modus : Bestimmt, ob der Parameter der Rückruffunktion der Wert des Array-Elements oder des Schlüsselwertpaares des Arrays ist. Array_filter_use_key (Standardwert), array_filter_use_both (übergeben sowohl Schlüssel als auch Werte).
In PHP sind die Schlüssel zum assoziativen Array normalerweise Zeichenfolgen oder Zahlen, und die gepaarten Werte sind die Daten, die Sie speichern und filtern möchten. Array_Filter () kann basierend auf Werten, Tasten oder beiden Tasten und Werten filtriert werden.
Angenommen, wir haben ein assoziatives Array, das mehrere Benutzerinformationen enthält, und möchten alle Benutzer, die jünger als 18 Jahre alt sind, herausfiltern.
<?php
$users = [
"user1" => ["name" => "Alice", "age" => 25],
"user2" => ["name" => "Bob", "age" => 17],
"user3" => ["name" => "Charlie", "age" => 30]
];
$filtered_users = array_filter($users, function($user) {
return $user["age"] >= 18; // Nur das Alter ist größer als oder gleich zu 18 Benutzer
});
print_r($filtered_users);
?>
Ausgabe:
Array
(
[user1] => Array
(
[name] => Alice
[age] => 25
)
[user3] => Array
(
[name] => Charlie
[age] => 30
)
)
Im obigen Beispiel durchquert die Funktion array_filter () das Array $ -Nutzer und verwendet die Rückruffunktion, um Benutzer zu filtern, die älter als oder gleich 18 sind.
Angenommen, wir möchten assoziative Arrays basierend auf bestimmten Schlüssel filtern, z. B. das Löschen von Informationen von bestimmten Benutzern.
<?php
$users = [
"user1" => ["name" => "Alice", "age" => 25],
"user2" => ["name" => "Bob", "age" => 17],
"user3" => ["name" => "Charlie", "age" => 30]
];
$filtered_users = array_filter($users, function($user, $key) {
return $key != "user2"; // Der Ausschlussschlüssel ist user2 Benutzer
}, ARRAY_FILTER_USE_BOTH);
print_r($filtered_users);
?>
Ausgabe:
Array
(
[user1] => Array
(
[name] => Alice
[age] => 25
)
[user3] => Array
(
[name] => Charlie
[age] => 30
)
)
In diesem Beispiel verwendet Array_filter () den Modus Array_Filter_USE_BOTH , sodass die Rückruffunktion nicht nur auf die Werte von Array -Elementen, sondern auch deren Schlüssel zugreifen kann. Auf diese Weise können wir entscheiden, ob wir das Element basierend auf dem Schlüssel behalten sollen.
Bei der Verarbeitung von Daten können Sie auf ein Array stoßen, das einen Nullwert, Null , False , 0 oder leere Zeichenfolge enthält. Verwenden Sie Array_Filter () , um diese ungültigen Daten leicht zu bereinigen.
Löschen Sie beispielsweise ein Element mit einem Wert von Falsch in einem Array:
<?php
$array = [0, 1, false, 2, "", null, 3];
$filtered_array = array_filter($array); // Alle werden standardmäßig gelöscht `false` Wert
print_r($filtered_array);
?>
Ausgabe:
Array
(
[1] => 1
[3] => 2
[6] => 3
)
Array_filter () ist ein sehr bequemes Werkzeug, wenn Sie Elemente herausfiltern müssen, die bestimmte Kriterien aus einem Datensatz erfüllen. Beispielsweise kann es verwendet werden, um alle Bestellungen mit einem Betrag von mehr als einem bestimmten Wert herauszufiltern oder alle Online -Benutzer herauszufiltern.
Komplexe Datenfilterlogik kann mit Cleaner Code über Array_filter () implementiert werden. Im Vergleich zur Verwendung von Foreach -Schleifen, um Daten manuell zu filtern, wird Array_filter () den Code klarer und leichter zu lesen.
Angenommen, wir haben ein Array, das mehrere URL -Adressen enthält, und wir möchten URLs mit dem angegebenen Domänennamen (z. B. M66.net ) herausfiltern. Wir können Array_filter () verwenden, um mit Parse_url () zusammenzuarbeiten, um diese Aufgabe zu erledigen.
<?php
$urls = [
"http://example.com/page1",
"https://m66.net/page2",
"https://m66.net/page3",
"http://anotherdomain.com/page4"
];
$filtered_urls = array_filter($urls, function($url) {
$parsed_url = parse_url($url);
return isset($parsed_url['host']) && $parsed_url['host'] === 'm66.net';
});
print_r($filtered_urls);
?>
Ausgabe: