In der PHP -Programmierung ist Array_Chunk () eine sehr praktische Funktion, mit der ein großes Array in mehrere kleine Arrays (Blöcke) aufgeteilt wird. Diese Funktion hat zwei Parameter, das erste ist das ursprüngliche Array und die zweite ist die Größe jedes Blocks. Obwohl diese Funktion sehr bequem ist, erzeugt sie manchmal Blöcke, die Nullwerte enthalten, was für einige Anwendungsszenarien nicht ideal ist. Wie vermeiden Sie also Array_Chunk () Erzeugen von leeren Blöcken beim Aufteilen von Arrays? Im Folgenden werden wir einige gemeinsame Lösungen diskutieren.
Schauen wir uns zunächst die grundlegende Verwendung der Funktion array_chunk () an. Angenommen, wir haben ein einfaches Array und möchten es in Stücke der Größe 3 teilen:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$result = array_chunk($arr, 3);
print_r($result);
?>
Das Ausgabeergebnis ist wie folgt:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
[2] => 9
)
)
Der obige Code spaltet das ursprüngliche Array erfolgreich in mehrere Blöcke der Größe 3.
Array_Chunk () spaltet das Array nach der angegebenen Blockgröße. Wenn die Größe des Arrays jedoch durch die Blockgröße nicht vollständig teilbar sein kann, kann der letzte Block weniger als die angegebene Anzahl von Elementen oder sogar einen leeren Block enthalten. Wenn Sie leere Blöcke vermeiden möchten, können Sie die folgenden Methoden zur Optimierung verwenden.
Um leere Blöcke zu vermeiden, können wir die Funktion array_filter () verwenden, um leere Blöcke nach dem Aufteilen des Arrays herauszufiltern. Hier ist ein Beispiel dafür, wie dies erreicht werden kann:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8];
$chunked = array_chunk($arr, 3);
// verwenden array_filter() Filtern Sie leere Blöcke heraus
$chunked = array_filter($chunked, function($chunk) {
return !empty($chunk);
});
print_r($chunked);
?>
Das Ausgabeergebnis ist wie folgt:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
)
)
Durch die Verwendung von Array_filter () können wir Blöcke entfernen, die leere Elemente enthalten, damit keine leeren Blöcke angezeigt werden.
Wenn Sie keine leeren Blöcke filtern möchten, sollten Sie die Blockgröße beim Aufteilen des Arrays einstellen. Sie können beispielsweise die entsprechende Blockgröße dynamisch basierend auf der Länge des Arrays berechnen, bevor Sie das Array teilen, um sicherzustellen, dass der letzte Block nicht leer ist. Zum Beispiel:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7];
$chunkSize = 3;
$remaining = count($arr) % $chunkSize;
if ($remaining > 0) {
$chunkSize = $remaining;
}
$chunked = array_chunk($arr, $chunkSize);
print_r($chunked);
?>
Auf diese Weise passt der Code die Größe des letzten Blocks entsprechend der Länge des Arrays an, um leere Blöcke zu vermeiden.
In den Beispielen in diesem Artikel verstehen wir das Problem, dass die Funktion array_chunk () bei der Aufteilung eines Arrays leere Blöcke erzeugt und zwei Lösungen untersucht: Leere Blöcke mit Array_Filter () oder dynamisch einstellen, um die Erzeugung leerer Blöcke zu vermeiden. Abhängig von den unterschiedlichen Bedürfnissen können Sie die geeignete Lösung auswählen, um sicherzustellen, dass der Effekt des Arrays erwartungsgemäß ist.