現在の位置: ホーム> 最新記事一覧> array_chunkは、多次元配列のネストされた分割をサポートしていますか?

array_chunkは、多次元配列のネストされた分割をサポートしていますか?

M66 2025-04-26

PHPでは、 array_chunk()は非常に一般的な配列関数です。配列を複数の小さな配列に分割でき、各小さな配列の要素の数はユーザーによって指定されます。ただし、多次元配列の場合、 array_chunk()はデフォルトでネストされた配列を再帰的に分割しません。渡された要素の数で最も外側の配列を分割します。

array_chunkの基本的な使用

array_chunk()の構文は非常に単純で、次のパラメーターを受け入れます。

 array_chunk(array $array, int $length, bool $preserve_keys = false): array
  • $配列:分割する必要がある配列。

  • $の長さ:各小さな配列に含まれる要素の数。

  • $ preserve_keys :元の配列のキー名を保持するかどうか。デフォルトはfalseで、キー名は再インネックスされます。

たとえば、次のコードは、1次元配列を複数の小さな配列に分割します。

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

print_r($result);

出力結果:

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

上記のように、 array_chunk()$ array配列を3つの小さな配列に分割します。各小さな配列には、最大3つの要素が含まれます。

多次元配列の状況

配列が多次元である場合、 array_chunk()のデフォルトの動作は、その中のネストされた配列を再帰的に処理することなく、最も外側のアレイのみを分割することです。多次元配列を分割したい場合、 array_chunk()はこの目標を直接達成できません。

例:

次のように、2次元配列があるとします。

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

array_chunk()を使用してこの2次元配列を分割する場合:

 $result = array_chunk($array, 2);

print_r($result);

出力は次のとおりです。

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

上記のように、 array_chunk()が2次元配列を分割すると、ネストされた配列をさらに分割することはありませんが、代わりに最も外側のアレイを2つの小さな配列に分割します。各小さな配列にはまだ完全なサブアレイが含まれています。

多次元配列を再帰的に分割する方法は?

多次元アレイの再帰分割を実装するために、カスタム再帰関数を介してarray_chunk()の動作をシミュレートできます。これにより、アレイを通過し、 array_chunk()を通話することにより、ネストされた配列を再帰的に分割できます。

これは、多次元配列を再帰的に分割する例です。

 function recursive_array_chunk($array, $length) {
    $result = [];
    foreach ($array as $key => $value) {
        // 値が配列の場合,再帰的分割
        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);

Recursive_array_chunk()関数は、各レイヤーを多次元配列で再帰的に処理し、多次元配列の分割を実現します。最終的に、ネストされた配列も正しく分割されます。

まとめ

  • array_chunk()はデフォルトで複数次元配列の分割が行われ、最も外側のアレイのみを処理し、ネストされた配列は再帰的に処理されません。

  • 多次元配列を再帰的に分割する場合は、それを実装するにはカスタム関数が必要です。

  • アレイは、再帰を介してレイヤーごとにレイヤーを分割することができ、多次元配列のネストされた配列も分割できるようにします。

この記事が、多次元アレイでのarray_chunk()のアプリケーションを理解するのに役立つことを願っています。他の質問がある場合、または詳細な分析が必要な場合は、当社のWebサイトをご覧ください!