Aktueller Standort: Startseite> Neueste Artikel> Verarbeiten Sie schnell zweidimensionale Arrays mit Array_filter () und array_column ()

Verarbeiten Sie schnell zweidimensionale Arrays mit Array_filter () und array_column ()

M66 2025-05-14

In PHP ist die Verarbeitung und Filterung von zweidimensionalen Arrays eine häufige Aufgabe, insbesondere wenn das Datenvolumen groß ist. Glücklicherweise bietet PHP mehrere sehr nützliche integrierte Funktionen, mit denen wir dies effizient tun können. In diesem Artikel werden wir uns auf die Funktionen array_filter () und array_column () konzentrieren und zeigen, wie sie kombiniert werden können, um Daten in zweidimensionalen Arrays schnell zu verarbeiten und zu filtern.

1. Einführung in die Funktion array_column ()

Die Funktion array_column () wird verwendet, um den Wert einer Spalte aus einem mehrdimensionalen Array zu extrahieren. Es eignet sich hervorragend zum Extrahieren der Werte einer bestimmten Spalte aus einem 2D -Array. Die grundlegende Syntax dieser Funktion lautet wie folgt:

 array_column(array $array, mixed $column_key, mixed $index_key = null): array
  • $ Array : Ein zweidimensionales Array.

  • $ column_key : Die zu extrahierende Taste der Spalte.

  • $ INDEX_KEY : Optionaler Parameter, Angabe des Index des zurückgegebenen Arrays.

Zum Beispiel haben wir ein zweidimensionales Array, in dem jedes Subtarray die Informationen eines Benutzers darstellt:

 $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'],
];

Wir möchten die Name der Namen aller Benutzer extrahieren, wir können Array_Column () verwenden:

 $names = array_column($users, 'name');
print_r($names);

Die Ausgabe wird sein:

 Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

2. Einführung in die Funktion array_filter ()

Die Funktion array_filter () wird verwendet, um Elemente in einem Array zu filtern und Elemente zurückzugeben, die den angegebenen Bedingungen erfüllen. Die grundlegende Syntax ist wie folgt:

 array_filter(array $array, callable $callback, int $mode = 0): array
  • $ Array : Das Eingabearray.

  • $ Callback : Rückruffunktion, verwendet, um jedes Element des Arrays zu beurteilen.

  • $ modus : Optionaler Parameter, der feststellt, wie die Rückruffunktion funktioniert, normalerweise mit dem Standardwert 0 .

Angenommen, wir möchten Benutzer herausfiltern, deren E -Mail -Adresse M66.net enthält. Sie können Array_filter () verwenden, um Benutzer zu filtern, die die Kriterien erfüllen.

 $filteredUsers = array_filter($users, function($user) {
    return strpos($user['email'], 'm66.net') !== false;
});
print_r($filteredUsers);

Die Ausgabe wird sein:

 Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Alice
            [email] => alice@m66.net
        )

    [1] => Array
        (
            [id] => 2
            [name] => Bob
            [email] => bob@m66.net
        )

    [2] => Array
        (
            [id] => 3
            [name] => Charlie
            [email] => charlie@m66.net
        )
)

3.. Verwenden Sie Array_Column () und Array_Filter (), um zu kombinieren, um zu kombinieren

Manchmal müssen wir gleichzeitig bestimmte Spalten extrahieren und sie filtern. Zum Beispiel möchten wir die E -Mail -Adressen aller Domain -Namen von M66.NET herausfiltern und nur die Namen dieser Benutzer extrahieren. Wir können Array_filter () und Array_Column () in Kombination verwenden.

 $filteredEmails = array_filter($users, function($user) {
    return strpos($user['email'], 'm66.net') !== false;
});

$names = array_column($filteredEmails, 'name');
print_r($names);

Die Ausgabe wird sein:

 Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
)

4. Tatsächliche Fälle der kombinierten Verwendung

Angenommen, wir haben eine Liste von Benutzerdaten aus der API, und die Informationen jedes Benutzers enthalten eine E -Mail -Adresse. Wir möchten alle Benutzer mit dem Domänennamen m66.net herausfiltern und den Namen und die E -Mail -Adresse des Benutzers aus der IT extrahieren.

Zunächst erhalten wir die Daten über die API und speichern sie im $ user -Array:

 $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' => 'david@example.com'],
    ['id' => 5, 'name' => 'Eve', 'email' => 'eve@m66.net'],
];

Verwenden Sie anschließend Array_filter () , um Benutzer herauszufiltern, deren E -Mail m66.net enthält, und verwenden Sie Array_Column (), um den Namen und die E -Mail zu extrahieren:

 $filteredUsers = array_filter($users, function($user) {
    return strpos($user['email'], 'm66.net') !== false;
});

$names = array_column($filteredUsers, 'name');
$emails = array_column($filteredUsers, 'email');

print_r($names);
print_r($emails);

Die Ausgabe wird sein:

 Array
(
    [0] => Alice
    [1] => Bob
    [2] => Charlie
    [3] => Eve
)

Array
(
    [0] => alice@m66.net
    [1] => bob@m66.net
    [2] => charlie@m66.net
    [3] => eve@m66.net
)

Auf diese Weise filtern wir nicht nur die Benutzer, die die Kriterien erfüllen, sondern auch ihre Namen und E -Mail -Adressen extrahieren.

Das obige ist die Methode, um Daten in einem zweidimensionalen Array durch Array_Filter () und Array_Column () schnell und effizient zu verarbeiten und zu filtern. Diese beiden Funktionen können die Lesbarkeit und Leistung Ihres Codes erheblich verbessern, insbesondere wenn es sich um große Datensätze handelt. Ich hoffe, Sie können sie in tatsächlichen Projekten flexibel verwenden!