Aktueller Standort: Startseite> Neueste Artikel> Wie man ein assoziatives Array nach Feld aufteilt und verarbeitet

Wie man ein assoziatives Array nach Feld aufteilt und verarbeitet

M66 2025-04-28

In PHP wird die Funktion array_chunk normalerweise verwendet, um ein Array in mehrere kleinere Arrays aufzuteilen. Diese Funktion kann jedoch nur standardmäßig gemäß der Größe des Arrays aufgeteilt werden und kann nicht gemäß einem bestimmten Feld im Array aufgeteilt werden. Wenn wir das assoziative Array durch das angegebene Feld spalten und die Daten des Arrays Schritt für Schritt verarbeiten möchten, müssen wir eine kleine Änderung vornehmen.

In diesem Artikel wird vorgestellt, wie die Funktion array_chunk in Verbindung mit einigen anderen PHP -Techniken verwendet wird, um das assoziative Array gemäß den angegebenen Feldern zu teilen und es Schritt für Schritt zu verarbeiten.

1. Grundlegende Möglichkeit zur Verwendung von Array_Chunk -Funktion

Die Funktion Array_Chunk ist eine sehr nützliche Funktion in PHP, die ein Array in mehrere Subtarrays aufteilen und ein mehrdimensionales Array zurückgeben kann. Die grundlegende Syntax ist wie folgt:

 array_chunk(array $array, int $size, bool $preserve_keys = false): array
  • $ Array : Das zu spaltende Array.

  • $ Größe : Die Größe jedes Subtarrays.

  • $ PREISERVE_KEYS : Wenn auf True gesetzt, ist der Schlüsselname des Arrays erhalten; Ansonsten wieder index.

Zum Beispiel teilt der folgende Code ein einfaches Array von Zahlen in jedes Subtarray mit zwei Elementen auf:

 $numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$result = array_chunk($numbers, 2);
print_r($result);

Ausgangsergebnis:

 Array
(
    [0] => Array ( [0] => 1 [1] => 2 )
    [1] => Array ( [0] => 3 [1] => 4 )
    [2] => Array ( [0] => 5 [1] => 6 )
    [3] => Array ( [0] => 7 [1] => 8 )
    [4] => Array ( [0] => 9 )
)

2. Teilen Sie das assoziative Array nach Feld

Für assoziative Arrays möchten wir das Array manchmal durch ein bestimmtes Feld im Array teilen. Zu diesem Zeitpunkt können wir Array_Chunk verwenden, um das Array aufzuteilen, müssen jedoch andere Vorgänge kombinieren, um die Bedingungen für die Aufteilung anzugeben.

Angenommen, wir haben ein assoziatives Array, das Benutzerdaten enthält. Jeder Benutzer verfügt über ein Stadtfeld . Wir möchten diese Benutzerdaten in mehreren Subtarrays auf der Grundlage des Stadtfelds aufteilen, das jeweils Benutzer derselben Stadt enthält.

 $users = [
    ['name' => 'Alice', 'city' => 'New York'],
    ['name' => 'Bob', 'city' => 'Los Angeles'],
    ['name' => 'Charlie', 'city' => 'New York'],
    ['name' => 'David', 'city' => 'Chicago'],
    ['name' => 'Eve', 'city' => 'Los Angeles'],
    ['name' => 'Frank', 'city' => 'Chicago']
];

Um diese Daten nach City Field zu teilen, müssen wir zunächst Benutzer nach City gruppieren. Es kann mit Array_REDUCE oder anderen Methoden implementiert werden:

 $groupedByCity = [];

foreach ($users as $user) {
    $groupedByCity[$user['city']][] = $user;
}

Zu diesem Zeitpunkt wird die Struktur des $ gruppedByCity -Arrays lautet:

 Array
(
    [New York] => Array
        (
            [0] => Array ( [name] => Alice [city] => New York )
            [1] => Array ( [name] => Charlie [city] => New York )
        )
    [Los Angeles] => Array
        (
            [0] => Array ( [name] => Bob [city] => Los Angeles )
            [1] => Array ( [name] => Eve [city] => Los Angeles )
        )
    [Chicago] => Array
        (
            [0] => Array ( [name] => David [city] => Chicago )
            [1] => Array ( [name] => Frank [city] => Chicago )
        )
)

Als nächstes können wir die Funktion array_chunk verwenden, um die Benutzerdaten in jeder Stadt in kleine Subtarrays aufzuteilen. Zum Beispiel möchten wir, dass eine Liste von Benutzern in jeder Stadt bis zu 2 Benutzer enthalten:

 $chunkedByCity = [];

foreach ($groupedByCity as $city => $users) {
    $chunkedByCity[$city] = array_chunk($users, 2);
}

Zu diesem Zeitpunkt wird die Struktur des $ ChunkedByCity -Arrays:

 Array
(
    [New York] => Array
        (
            [0] => Array ( [name] => Alice [city] => New York )
            [1] => Array ( [name] => Charlie [city] => New York )
        )
    [Los Angeles] => Array
        (
            [0] => Array ( [name] => Bob [city] => Los Angeles )
            [1] => Array ( [name] => Eve [city] => Los Angeles )
        )
    [Chicago] => Array
        (
            [0] => Array ( [name] => David [city] => Chicago )
            [1] => Array ( [name] => Frank [city] => Chicago )
        )
)

3. Verarbeiten Sie die geteilten Daten nach und nach

Sobald wir das Array per Feld mit Array_Chunk aufgeteilt haben, können wir diese Subtarrays Schritt für Schritt verarbeiten. Zum Beispiel können wir die Daten jeder Stadt durchqueren und einige Vorgänge ausführen, z. B. die Ausgabe von Benutzerinformationen für jedes Subtarray:

 foreach ($chunkedByCity as $city => $chunks) {
    echo "City: $city\n";
    foreach ($chunks as $chunk) {
        echo "Users:\n";
        foreach ($chunk as $user) {
            echo "- {$user['name']}\n";
        }
    }
}

Das Ausgabeergebnis ist wie folgt:

 City: New York
Users:
- Alice
- Charlie
City: Los Angeles
Users:
- Bob
- Eve
City: Chicago
Users:
- David
- Frank

4. Praktische Anwendung: Schritt für Schritt nach Feld- und Prozess -URLs geteilt

Angenommen, wir haben ein Array mit URL -Informationen und möchten sich entsprechend dem Domänennamen in der URL (wie M66.net ) teilen und verarbeiten. Hier ist ein einfaches Beispiel:

 Processing URLs:
- http://m66.net/page1
- http://m66.net/page2