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から再び開始するのではなく、元のキー値を保持します。この機能は、インデックス情報を保存する必要がある配列を扱う場合に非常に便利です。