PHPでは、 array_chunkとarray_merge_recursiveは、2つの非常に便利な配列操作機能です。 array_chunkはアレイを複数の小片に分割できますが、 array_merge_recursiveを使用すると、複数の配列を再帰的にマージすることができます。この記事では、配列チャンク後にマージ操作を実行するために、これら2つの機能を使用する方法を示します。
Array_chunkは、Arrayを複数の小さな配列に分割できるPHPの組み込み関数です。その構文は次のとおりです。
array_chunk(array $array, int $size, bool $preserve_keys = false): array
$配列は、チャンクする必要がある配列です。
$サイズは各サブアレイのサイズです。
$ preserve_keysパラメーターは、元の配列のキー値を保持するかどうかを決定します。
サンプルコード:
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$chunkedArray = array_chunk($array, 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
)
)
array_merge_recursive関数は、複数の数値を1つに再帰的に組み合わせます。アレイのキーが複数の配列に存在する場合、 array_merge_recursiveは値を配列にマージします。その構文は次のとおりです。
array_merge_recursive(array ...$arrays): array
$配列はマージする配列であり、任意の数の配列にすることができます。
サンプルコード:
$array1 = ["a" => "apple", "b" => "banana"];
$array2 = ["a" => "apricot", "b" => "blueberry"];
$mergedArray = array_merge_recursive($array1, $array2);
print_r($mergedArray);
出力結果:
Array
(
[a] => Array
(
[0] => apple
[1] => apricot
)
[b] => Array
(
[0] => banana
[1] => blueberry
)
)
Array_chunkとarray_merge_Recursiveを一緒に使用して、最初に大きな配列をチャンキングしてから、各小さな配列を再帰的にマージできます。これは、データをチャンクに統合する必要があるいくつかのシナリオに非常に役立ちます。
多次元配列があり、最初にいくつかのブロックに分割してから、それらのブロックをマージしたいとします。実装コードの例は次のとおりです。
// オリジナル配列
$array = [
"key1" => ["a" => "apple", "b" => "banana"],
"key2" => ["a" => "apricot", "b" => "blueberry"],
"key3" => ["c" => "cherry", "d" => "date"],
"key4" => ["c" => "cranberry", "d" => "dragonfruit"]
];
// 使用 array_chunk 配列をブロックします,各ブロックには2つの要素が含まれています
$chunkedArray = array_chunk($array, 2, true);
// 使用 array_merge_recursive 各チャンクをマージします
$mergedChunks = array();
foreach ($chunkedArray as $chunk) {
$mergedChunks[] = array_merge_recursive(...$chunk);
}
// マージされた結果を出力します
print_r($mergedChunks);
出力結果:
Array
(
[0] => Array
(
[key1] => Array
(
[a] => apple
[b] => banana
)
[key2] => Array
(
[a] => apricot
[b] => blueberry
)
)
[1] => Array
(
[key3] => Array
(
[c] => cherry
[d] => date
)
[key4] => Array
(
[c] => cranberry
[d] => dragonfruit
)
)
)
array_chunkとarray_merge_recursiveを組み合わせることにより、配列を簡単にチャンクに分割し、再帰的にマージすることができます。このアプローチは、特に大量のデータを扱う場合、複雑な多次元配列を処理するのに非常に効果的です。