In PHP müssen wir uns häufig mit mehrdimensionalen Arrays befassen, insbesondere wenn wir bestimmte Zeilen von Arrays herausfiltern. PHP bietet viele praktische Funktionen, mit denen wir diese Operationen effizient ausführen können, darunter Array_Column und Array_intersect zwei sehr häufig verwendete Funktionen.
Die Funktion array_column kann verwendet werden, um den Wert einer angegebenen Spalte in einem mehrdimensionalen Array zu erhalten, während die Funktion array_intersect verwendet werden kann, um den Teil eines Arrays zu finden, das sich mit einem anderen Array schneidet. Wenn wir diese beiden Funktionen kombinieren, können wir leicht Zeilen herausfiltern, die spezifische Werte enthalten. In diesem Artikel wird ein einfaches Beispiel verwendet, um zu zeigen, wie diese beiden Funktionen zum Filtern verwendet werden.
Angenommen, wir haben ein mehrdimensionales Array mit mehreren Benutzerinformationen. Jede Benutzerinformation ist ein assoziatives Array. Wir müssen alle Benutzerinformationen mit E -Mail -Adresse Beispiel@m66.net herausfiltern. Sie können Array_Column verwenden, um alle E -Mail -Adressen zu erhalten, und dann Array_intersect verwenden, um Zeilen zu finden, die bestimmte E -Mail -Adressen enthalten.
<?php
// Benutzerdaten
$users = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net'],
['id' => 4, 'name' => 'David', 'email' => 'example@m66.net'],
['id' => 5, 'name' => 'Eve', 'email' => 'eve@m66.net'],
];
// Spezifische E -Mail -Adressen, die gefiltert werden müssen
$targetEmail = 'example@m66.net';
// verwenden array_column Holen Sie sich alle E -Mail -Adressen
$emails = array_column($users, 'email');
// verwenden array_intersect Suchen Sie die gleiche Zeile wie die Zielpostfach
$filteredUsers = array_filter($users, function ($user) use ($emails, $targetEmail) {
return in_array($targetEmail, $emails) && $user['email'] === $targetEmail;
});
// Ausgangsfilterergebnisse
print_r($filteredUsers);
?>
Array_Column : Diese Funktion wird verwendet, um die angegebene Spalte aus einem mehrdimensionalen Array zu extrahieren. Hier verwenden wir array_column ($ user, 'mail'), um alle E -Mail -Adressen aller Benutzer zu extrahieren und sie im $ E -Mail -Array zu speichern.
Array_intersect : Diese Funktion kann den Schnittpunkt zwischen Arrays zurückgeben. In diesem Beispiel verwenden wir Array_intersect nicht direkt, um Array -Kreuzungen zu vergleichen, sondern in IN_Array , um zu überprüfen, ob die E -Mail -Adresse im Zielarray vorhanden ist. Wenn eine passende E -Mail -Adresse gefunden wird, geben wir die entsprechende Zeile zurück.
Array_filter : Wird zum Filtern von Arrays und Filtern von Elementen, die den Kriterien erfüllen. In diesem Beispiel filtern wir die Zeilen mit der E -Mail -Adresse 'Beispiel@m66.net' über eine benutzerdefinierte Rückruffunktion.
Beim Ausführen des oben genannten Codes enthält das $ filteredUsers -Array nur Benutzerdaten mit dem Mailbox 'Beispiel@m66.net' und das Ausgabeergebnis lautet wie folgt: