PHP

PHPのarray_merge、array_push、array_merge_recursiveで配列をマージした出力結果

PHPでは、異なる配列をマージして1つの配列として扱いたい場合があります。たとえば、データベースから取得したデータやユーザー入力を統合する場面などで役立ちます。
配列をマージする方法は主に以下の3つの関数を使用します。

  1. array_merge: 配列同士を単純に結合する。
  2. array_push: 既存の配列に新しい値を追加する。
  3. array_merge_recursive: 連想配列のキーを維持しながら統合する。

この記事では、それぞれの関数を使った場合の挙動や具体的な出力結果を初心者にもわかりやすく解説していきます。PHPを使った開発で「配列操作のベストプラクティス」を身につけましょう。

用意した配列データ

以下の添字配列と連想配列を用意しました。

//添字配列
$arry1 = array('A','B','C');
$arry2 = array('D','E','F');
//連想配列
$rensoarry1 = array(
    'no' => 1,
    'sei' => 'yamada',
    'mei' => 'taro',
    'sex' => 'men',
    'todofuken' => 'tokyo'
);
$rensoarry2 = array(
    'no' => 2,
    'sei' => 'suzuki',
    'mei' => 'ziro',
    'sex' => 'women',
    'city' => 'yokohama'
);

array_mergeを使ったマージ出力結果

添字配列のarray_merge

print_r(array_merge($arry1,$arry2));

添字配列のarray_merge出力結果は、$arry1末尾から$arry2が追加されました。

Array
(
    [0] => A
    [1] => B
    [2] => C
    [3] => D
    [4] => E
    [5] => F
)

連想配列のarray_merge

print_r(array_merge($rensoarry1,$rensoarry2));

連想配列のarray_merge出力結果は、
キーが同じ場合、$rensoarry2に$rensoarry1が上書きされ、キーが異なる場合追加されました。

Array
(
    [no] => 2
    [sei] => suzuki
    [mei] => ziro
    [sex] => women
    [todofuken] => tokyo
    [city] => yokohama
)

array_pushを使ったマージ出力結果

添字配列のarray_push

array_push($arry1,$arry2);
print_r($arry1);

添字配列のarray_push出力結果は、$arry1に1つの添字として末尾に$arry2が追加されました。

Array
(
    [0] => A
    [1] => B
    [2] => C
    [3] => Array
        (
            [0] => D
            [1] => E
            [2] => F
        )

)

連想配列のarray_push

array_push($rensoarry1,$rensoarry2);
print_r($rensoarry1);

連想配列のarray_push出力結果は、$rensoarry1に1つの添字[0]として末尾に$rensoarry2が追加されました。

Array
(
    [no] => 1
    [sei] => yamada
    [mei] => taro
    [sex] => men
    [todofuken] => tokyo
    [0] => Array
        (
            [no] => 2
            [sei] => suzuki
            [mei] => ziro
            [sex] => women
            [city] => yokohama
        )

)

array_merge_recursiveを使ったマージ出力結果

添字配列のarray_merge_recursive

print_r(array_merge_recursive($arry1, $arry2));

添字配列のarray_merge_recursive出力結果は、
$arry1末尾から$arry2が追加されarray_mergeと同じ結果になりました。

Array
(
    [0] => A
    [1] => B
    [2] => C
    [3] => D
    [4] => E
    [5] => F
)

連想配列のarray_merge_recursive

print_r(array_merge_recursive($rensoarry1, $rensoarry2));

連想配列のarray_merge_recursive出力結果は、
キーごとに各添字がまとめられて出力されました。
array_merge_recursiveは連想配列用時に使うと便利なマージ関数でした。

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

    [sei] => Array
        (
            [0] => yamada
            [1] => suzuki
        )

    [mei] => Array
        (
            [0] => taro
            [1] => ziro
        )

    [sex] => Array
        (
            [0] => men
            [1] => women
        )

    [todofuken] => tokyo
    [city] => yokohama
)

配列をPHPのarray_merge、array_push、array_merge_recursiveを使ってマージした出力結果ページ

「配列をPHPのarray_merge、array_push、array_merge_recursiveを使ってマージした出力結果」のページも以下から確認できます。
配列をPHPのarray_merge、array_push、array_merge_recursiveを使ってマージした出力結果ページ

まとめ

配列マージ関数はそれぞれの特性に応じて使い分ける必要があります。
array_mergeはシンプルな配列結合に向いており、array_pushは新しい要素を1つ追加したい場合に便利です。
一方、array_merge_recursiveは連想配列の複雑なマージに適しています。開発シーンに応じて使い分け、効率的なコードを書きましょう!

 
※流用される場合は自己責任でお願いします。