In PHP wird die Funktion array_chunk () verwendet, um ein Array in mehrere kleinere Arrays aufzuteilen. Wenn Array_Chunk () aufgerufen wird, bestimmt der zweite Parameter die Anzahl der Elemente für jedes kleine Array. Wenn wir diesen zweiten Parameter dynamisch entsprechend der Länge des ursprünglichen Arrays anpassen möchten, was sollen wir dann tun?
In diesem Artikel wird vorgestellt, wie der zweite Parameter von array_chunk () dynamisch gemäß der Länge des Arrays festgelegt wird.
Die grundlegende Syntax von Array_Chunk () lautet wie folgt:
array_chunk(array $array, int $size, bool $preserve_keys = false): array
$ Array : Das Eingabearray.
$ Größe : Die Größe jedes Split -Arrays.
$ PREIVERVE_KEYS : Ob Sie die Schlüssel des ursprünglichen Arrays erhalten müssen (Standard ist falsch ).
Zum Beispiel:
$array = [1, 2, 3, 4, 5, 6];
$chunked = array_chunk($array, 2);
print_r($chunked);
Ausgabe:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
)
[1] => Array
(
[0] => 3
[1] => 4
)
[2] => Array
(
[0] => 5
[1] => 6
)
)
Manchmal möchten wir die Größe jedes Subtarrays basierend auf der Länge des Arrays dynamisch bestimmen. Wenn das Array beispielsweise länger ist, möchten wir, dass jedes Subtarray mehr Elemente enthält. Wenn das Array kleiner ist, enthält jedes Subtarray weniger Elemente. Wir können es auf folgende Weise erreichen:
function dynamicChunkSize($array) {
// Holen Sie sich die Arraylänge
$length = count($array);
// Stellen Sie die Chunking -Größe gemäß der Länge des Arrays ein,Angenommen, die Länge ist geringer als 10 Zeitabteilung 2 Stück,Länge größer als 10 Zeitabteilung 3 Stück
if ($length < 10) {
$size = 2;
} else {
$size = ceil($length / 3); // 如果数组Länge größer als 10,Es ist durch ein Drittel geteilt
}
return $size;
}
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$size = dynamicChunkSize($array);
$chunked = array_chunk($array, $size);
print_r($chunked);
Im obigen Beispiel definieren wir eine Funktion DynamicChunkSize () , die die Größe jedes Subtarrays basierend auf der Länge des Arrays dynamisch bestimmt. Wenn die Arraylänge beispielsweise weniger als 10 beträgt, setzen wir die Größe jedes kleinen Arrays auf 2; Wenn die Arraylänge größer als 10 ist, setzen wir die Größe jedes kleinen Arrays auf ein Drittel der Länge des Arrays.
Das dynamische Einstellen des zweiten Parameters von Array_Chunk () ist für bestimmte Szenarien sehr geeignet. Zum Beispiel können wir beim Anzeigen von Daten zum Paging die Anzahl der auf jeder Seite angezeigten Daten basierend auf der Gesamtmenge der Daten dynamisch berechnen. Hier ist ein Beispiel für eine Pagination:
function getPaginationChunks($array, $totalItems, $itemsPerPage) {
$totalPages = ceil($totalItems / $itemsPerPage);
$chunks = [];
for ($i = 0; $i < $totalPages; $i++) {
$start = $i * $itemsPerPage;
$chunks[] = array_slice($array, $start, $itemsPerPage);
}
return $chunks;
}
$array = range(1, 100); // Angenommen, dies ist ein Einschlüsse100Auswahl von Elementen
$totalItems = count($array);
$itemsPerPage = 10;
$pagination = getPaginationChunks($array, $totalItems, $itemsPerPage);
print_r($pagination);
In diesem Beispiel haben wir Array_Slice () verwendet, um die Paging -Funktion zu simulieren. Wir teilen das Array dynamisch basierend auf der Gesamtmenge der Daten und der Anzahl der Datenstreifen pro Seite und geben die Daten jeder Seite zurück.
Durch dynamisches Einstellen des zweiten Parameters von Array_Chunk () kann uns die Array -Segmentierung flexibler behandeln, insbesondere wenn es sich um Paging- oder Spaltarrays basierend auf bestimmten Regeln handelt. Durch die Berechnung der Länge des Arrays und der dynamischen Einstellung der Größe jedes Subtarrays nach den Bedingungen können wir leicht unterschiedliche Bedürfnisse erfüllen.