PHPでは、 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サイトをご覧ください!