Die Macht der PHP-Funktion array_chunk
PHP bietet viele eingebaute Funktionen. array_chunk teilt ein Array in kleinere Teile auf und erleichtert Paginierung und Stapelverarbeitung.
PHP verfügt über eine umfangreiche Sammlung eingebauter array-Funktionen, und array_chunk() ist eine der nützlichsten für die Arbeit mit großen Datensätzen. Sie teilt ein einzelnes Array in eine Reihe kleinerer Arrays ("Chunks") fester Größe auf, was die Paginierung, Stapelverarbeitung und Darstellung von Daten erleichtert. Dieses Kapitel erklärt die Syntax, führt durch ausführbare Beispiele, behandelt das Flag preserve_keys und weist auf häufige Fallstricke hin.
Was ist die Funktion array_chunk?
Die Funktion array_chunk() teilt ein Array in kleinere Arrays auf, die jeweils eine angegebene Anzahl von Elementen enthalten. Sie ist immer dann nützlich, wenn Sie eine lange Liste in gleichmäßig große Gruppen aufteilen müssen — zum Beispiel beim Rendern eines Rasters mit N Spalten, beim Verarbeiten von Datensätzen in Stapeln oder beim Erstellen paginierter Ausgaben.
Syntax
array_chunk(array $array, int $length, bool $preserve_keys = false): array| Parameter | Beschreibung |
|---|---|
$array | Das aufzuteilende Array. |
$length | Die Größe jedes Chunks. Muss 1 oder größer sein, sonst wirft array_chunk() einen ValueError (PHP 8+) bzw. gibt eine Warnung aus (PHP 7). |
$preserve_keys | Optional. false (Standard) reindiziert jeden Chunk ab 0; true behält die ursprünglichen Schlüssel bei. |
Rückgabewert: ein neues mehrdimensionales Array. Das ursprüngliche Array wird niemals verändert — array_chunk() arbeitet nicht in place.
Wie funktioniert array_chunk?
array_chunk() durchläuft das Eingabe-Array der Reihe nach und kopiert Elemente in ein neues Teil-Array, bis es $length Elemente erreicht, und beginnt dann einen neuen Chunk. Der letzte Chunk enthält die verbleibenden Elemente und kann daher kleiner als die anderen sein.
Standardmäßig ist der dritte Parameter preserve_keys auf false gesetzt, was die Schlüssel in jedem Chunk ab 0 neu indiziert. Wenn er auf true gesetzt wird, bleiben die ursprünglichen Array-Schlüssel erhalten — wichtig, wenn diese Schlüssel eine Bedeutung tragen (z. B. string-Schlüssel oder nicht-sequenzielle IDs).
Betrachten Sie zum Beispiel das folgende Array:
PHP define an array
Wenn wir array_chunk auf dieses Array anwenden und 3 als zweites Argument übergeben, erhalten wir folgendes Ergebnis:
Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
)
[1] => Array
(
[0] => d
[1] => e
[2] => f
)
[2] => Array
(
[0] => g
)
)Wie zu sehen ist, wurde das ursprüngliche Array in drei kleinere Arrays aufgeteilt, von denen jedes drei Elemente enthält (mit Ausnahme des letzten Arrays, das nur eines enthält).
Ursprüngliche Schlüssel beibehalten
Standardmäßig wird jeder Chunk ab 0 neu indiziert. Übergeben Sie true als drittes Argument, um stattdessen die ursprünglichen Schlüssel beizubehalten:
<?php
$data = array("id10" => "a", "id20" => "b", "id30" => "c");
print_r(array_chunk($data, 2, true));
?>Ausgabe:
Array
(
[0] => Array
(
[id10] => a
[id20] => b
)
[1] => Array
(
[id30] => c
)
)Lassen Sie preserve_keys auf true gesetzt, wann immer die Schlüssel die Daten identifizieren (string-Schlüssel, Datenbank-IDs usw.); andernfalls gehen sie bei der nächsten Neuindizierung verloren.
Warum array_chunk verwenden?
Die Funktion array_chunk ist für eine Vielzahl von Anwendungsfällen äußerst nützlich, darunter:
- Aufteilen großer Arrays in kleinere, besser handhabbare Teile zur Verarbeitung.
- Anzeigen großer Datenmengen in paginierter Form (z. B. Aufteilen eines Ergebnis-Arrays in kleinere Arrays zur Anzeige auf mehreren Seiten).
- Verbesserung der Leistung von Algorithmen, die auf Arrays arbeiten, indem die Größe der gleichzeitig verarbeiteten Arrays reduziert wird.
Beispielanwendungsfall: Paginierung
Einer der häufigsten Anwendungsfälle für die Funktion array_chunk ist die Paginierung. Betrachten Sie das folgende Beispiel, bei dem wir ein Array mit 12 Ergebnissen haben, die wir auf 2 Seiten anzeigen möchten:
Example of php array_chunk function
array_chunk() teilt die 12 Ergebnisse in 2 Seiten auf: Der erste Chunk enthält 10 Elemente und der zweite die verbleibenden 2. Jeder Chunk entspricht direkt einer Seite, sodass Sie $pages[0] für Seite 1, $pages[1] für Seite 2 rendern und count($pages) verwenden können, um die Seitenlinks zu erstellen.
Häufige Fallstricke
$lengthmuss mindestens 1 sein. Ein Wert von0oder eine negative Zahl wirft in PHP 8 einenValueErrorund erzeugte in PHP 7 eine Warnung.- Das ursprüngliche Array bleibt unverändert.
array_chunk()gibt ein neues Array zurück; weisen Sie das Ergebnis zu und erwarten Sie keine Mutation der Eingabe. - Reihenfolge wird beibehalten, Schlüssel nicht (standardmäßig). Elemente bleiben in ihrer ursprünglichen Reihenfolge, aber numerische Schlüssel werden auf
0..nzurückgesetzt, sofern Sie nichtpreserve_keys = trueübergeben. - Der letzte Chunk kann kürzer sein. Behandeln Sie beim Iterieren immer einen abschließenden Chunk, der kleiner als
$lengthist.
Verwandte Funktionen
- array_slice() — einen einzelnen zusammenhängenden Abschnitt eines Arrays extrahieren, anstatt das gesamte Array aufzuteilen.
- array_splice() — einen Abschnitt eines Arrays in place entfernen oder ersetzen.
- array_merge() — mehrere Arrays wieder zu einem zusammenführen.
- array_map() — nach dem Aufteilen einen Callback auf jeden Chunk anwenden.
- PHP Arrays — eine Auffrischung zu indizierten und assoziativen Arrays.
Fazit
Die Funktion array_chunk() ist eine einfache, effektive Möglichkeit, ein großes Array in kleinere, gleichmäßig große Teile aufzuteilen. Ob Sie Ergebnisse paginieren, Datensätze stapelweise verarbeiten oder ein Raster aufbauen — sie hält die Array-Verarbeitung lesbar und vorhersehbar. Denken Sie an die zwei Regeln, über die Menschen stolpern: Die Chunk-Größe muss mindestens 1 betragen, und Schlüssel werden neu indiziert, sofern Sie nicht explizit angeben, sie beizubehalten.