現在の位置: ホーム> 最新記事一覧> array_chunk関数が配列を分割するときに元の配列インデックスを保存する方法

array_chunk関数が配列を分割するときに元の配列インデックスを保存する方法

M66 2025-04-26

PHPでは、 array_chunk()は、大きな配列をいくつかの小さな配列に分割して返すために使用される非常に一般的な関数です。デフォルトでは、 array_chunk()は、各小さな配列のインデックスをリセットします。これは0からインデックスをカウントします。配列を分割するときに元のインデックスを保持する場合は、追加のパラメーターを使用して使用できます。

基本的な使用法

まず、 array_chunk()の基本的な使用法を見てみましょう。複数の要素を含む配列があり、 array_chunk()を使用してこの配列を分割するとします。

 <?php
$originalArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$chunkedArray = array_chunk($originalArray, 3);

print_r($chunkedArray);
?>

実行後、得られる結果は次のとおりです。

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

ご覧のとおり、各小さな配列のインデックスは0からカウントされ、元の配列のインデックスはリセットされます。

元の配列インデックスを保持します

元の配列インデックスを維持するには、 array_chunk()の3番目のパラメーターをtrueに設定するだけです。このパラメーターにより、分割配列が元のキー名を保持することが保証されます。

 <?php
$originalArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$chunkedArray = array_chunk($originalArray, 3, true);

print_r($chunkedArray);
?>

実行後、得られる結果は次のとおりです。

 Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [3] => Array
        (
            [3] => 4
            [4] => 5
            [5] => 6
        )

    [6] => Array
        (
            [6] => 7
            [7] => 8
            [8] => 9
        )
)

これで、各小さな配列のインデックスが元の配列のインデックスを保持していることがわかります。

なぜ元のインデックスを保持するのですか?

特にインデックスに基づいてさらなる操作を行う必要がある場合、場合によっては、元のインデックスを維持することは非常に便利です。たとえば、分割配列またはプロセス関連のロジックに要素の元の位置を見つけたい場合、インデックスを保持するとコードが柔軟になります。

サンプルアプリケーションシナリオ

ユーザーの配列があり、各ユーザーに一意のIDがあり、この配列を分割してインデックスを維持すると、各ユーザーの元の場所をより簡単に追跡できます。例えば:

 <?php
$users = [
    101 => 'Alice',
    102 => 'Bob',
    103 => 'Charlie',
    104 => 'David',
    105 => 'Eve',
    106 => 'Frank'
];

$chunkedUsers = array_chunk($users, 2, true);

print_r($chunkedUsers);
?>

出力結果:

 Array
(
    [101] => Array
        (
            [101] => Alice
            [102] => Bob
        )

    [103] => Array
        (
            [103] => Charlie
            [104] => David
        )

    [105] => Array
        (
            [105] => Eve
            [106] => Frank
        )
)

インデックスを保持することにより、元のユーザーIDに基づいて各小さな配列を直接処理できます。

要約します

array_chunk()を使用してarrayを分割する場合、元の配列インデックスを保持する場合は、関数の3番目のパラメーターをtrueに設定するだけです。これにより、スプリットアレイは、0から再び開始するのではなく、元のキー値を保持します。この機能は、インデックス情報を保存する必要がある配列を扱う場合に非常に便利です。