Aktueller Standort: Startseite> Neueste Artikel> Unterstützt Array_Chunk die verschachtelte Aufteilung mehrdimensionaler Arrays verschachtelt?

Unterstützt Array_Chunk die verschachtelte Aufteilung mehrdimensionaler Arrays verschachtelt?

M66 2025-04-26

In PHP ist Array_Chunk () eine sehr allgemeine Array -Funktion. Es kann ein Array in mehrere kleine Arrays unterteilen, und die Anzahl der Elemente in jedem kleinen Array wird vom Benutzer angegeben. Für ein mehrdimensionales Array spaltet Array_Chunk () die verschachtelten Arrays jedoch standardmäßig nicht rekursiv. Es wird das äußerste Array durch die Anzahl der übergebenen Elemente teilen.

Grundlegende Verwendung von Array_Chunk

Die Syntax von Array_Chunk () ist sehr einfach und akzeptiert die folgenden Parameter:

 array_chunk(array $array, int $length, bool $preserve_keys = false): array
  • $ Array : Ein Array, das geteilt werden muss.

  • $ Länge : Die Anzahl der Elemente, die jedes kleine Array enthält.

  • $ PREIVERVE_KEYS : Ob Sie den Schlüsselnamen des ursprünglichen Arrays erhalten möchten. Die Standardeinstellung ist falsch und der Schlüsselname wird wieder integriert.

Zum Beispiel teilt der folgende Code ein eindimensionales Array in mehrere kleine Arrays auf:

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

print_r($result);

Ausgangsergebnis:

 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
        )
)

Wie oben gezeigt, teilt Array_Chunk () das $ Array -Array in drei kleine Arrays auf, wobei jedes kleine Array bis zu drei Elemente enthält.

Die Situation mehrdimensionaler Arrays

Wenn ein Array mehrdimensional ist, besteht das Standardverhalten von Array_Chunk () darin, nur das äußerste Array aufzuteilen, ohne die darin enthaltenen verschachtelten Arrays rekursiv zu verarbeiten. Wenn Sie ein mehrdimensionales Array aufspalten möchten, kann Array_Chunk () dieses Ziel nicht direkt erreichen.

Beispiel:

Angenommen, wir haben ein zweidimensionales Array wie folgt:

 $array = [
    ['apple', 'banana', 'cherry'],
    ['dog', 'elephant', 'fox'],
    ['grape', 'honeydew', 'kiwi']
];

Wenn wir Array_Chunk () verwenden, um dieses zweidimensionale Array aufzuteilen:

 $result = array_chunk($array, 2);

print_r($result);

Die Ausgabe wird sein:

 Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => apple
                    [1] => banana
                    [2] => cherry
                )

            [1] => Array
                (
                    [0] => dog
                    [1] => elephant
                    [2] => fox
                )
        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => grape
                    [1] => honeydew
                    [2] => kiwi
                )
        )
)

Wie oben gezeigt, spaltet es bei Array_Chunk () ein zweidimensionales Array nicht weiter das verschachtelte Array, sondern das äußerste Array in zwei kleine Arrays. Jedes kleine Array enthält immer noch ein komplettes Subtarray.

Wie trenne ich ein mehrdimensionales Array rekursiv?

Um eine rekursive Aufteilung mehrdimensionaler Arrays zu implementieren, können wir das Verhalten von Array_Chunk () durch benutzerdefinierte rekursive Funktionen simulieren. Dies kann das verschachtelte Array teilen, indem Sie das Array durchqueren und Array_Chunk () rekursiv aufrufen.

Hier ist ein Beispiel für rekursives Aufteilen mehrdimensionaler Arrays:

 function recursive_array_chunk($array, $length) {
    $result = [];
    foreach ($array as $key => $value) {
        // Wenn der Wert ein Array ist,Rekursive Aufteilung
        if (is_array($value)) {
            $result[$key] = recursive_array_chunk($value, $length);
        } else {
            $result[] = $value;
        }
    }

    return array_chunk($result, $length);
}

$array = [
    ['apple', 'banana', 'cherry'],
    ['dog', 'elephant', 'fox'],
    ['grape', 'honeydew', 'kiwi']
];

$result = recursive_array_chunk($array, 2);
print_r($result);

Die Funktion recursive_array_chunk () verarbeitet jede Schicht rekursiv in einem mehrdimensionalen Array, wodurch die Aufteilung eines mehrdimensionalen Arrays erkennen wird. Schließlich sind die verschachtelten Arrays auch korrekt aufgeteilt.

Zusammenfassung

  • Array_Chunk () standardmäßig mit der Aufteilung mehrdimensionaler Arrays behandelt nur das äußerste Array, und verschachtelte Arrays werden nicht rekursiv verarbeitet.

  • Wenn Sie ein mehrdimensionales Array rekursiv teilen möchten, benötigen Sie eine benutzerdefinierte Funktion, um es zu implementieren.

  • Das Array kann durch Schicht durch Rekursion aufgeteilt werden, um sicherzustellen, dass die verschachtelten Arrays in mehrdimensionalen Arrays ebenfalls aufgeteilt werden können.

Ich hoffe, dieser Artikel kann Ihnen helfen, die Anwendung von Array_Chunk () in mehrdimensionalen Arrays zu verstehen. Wenn Sie andere Fragen haben oder eine detailliertere Analyse benötigen, besuchen Sie bitte unsere Website!