php 配列同士をマージする

  • 作成日 2021.06.16
  • php
php 配列同士をマージする

phpで、array_mergeを使用して、配列同士をマージするサンプルコードを記述してます。phpのバージョンは8.0です。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • php 8.0.0
  • nginx 1.14.1

array_merge使い方

array_mergeを使用すれば、配列同士をマージすることが可能です。

array_merge(配列,配列,...);

以下は、配列同士をマージするサンプルコードとなります。

<?php

$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];

$result = array_merge($arr1,$arr2);

print_r($result);

$arr1 = [1, 2, 3];
$arr2 = [3, 4, 4];

$result = array_merge($arr1,$arr2);

print_r($result); 

実行結果

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
)
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 3
    [4] => 4
    [5] => 4
)

複数の配列をマージすることも可能です。

<?php

$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [7, 8, 9];

$result = array_merge($arr1,$arr2,$arr3);

print_r($result);

実行結果

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
)

NULLが値に入っていても、エラーにはなりません。

<?php

$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [7, 8, NULL];

$result = array_merge($arr1,$arr2,$arr3);

print_r($result);

実行結果

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 
)

連想配列の場合は、キー名でマージされて値は、上書きされます。

<?php

$arr1 = ["aaa" => 1, "bbb" => 2, "ccc" => 3];
$arr2 = ["aaa" => 10, "ddd" => 5, "eee" => 3];

$result = array_merge($arr1,$arr2);

print_r($result);

実行結果

Array
(
    [aaa] => 10
    [bbb] => 2
    [ccc] => 3
    [ddd] => 5
    [eee] => 3
)

「+」演算子を使用した場合は、キーが全て異なれば同じ結果になりますが、

<?php

$arr1 = ["aaa" => 1, "bbb" => 2, "ccc" => 3];
$arr2 = ["ddd" => 4, "eee" => 5, "fff" => 6];

$result = $arr1 + $arr2;

print_r($result);

$result = array_merge($arr1,$arr2);

print_r($result);

実行結果
また、「+」演算子の方がパフォーマンスは2倍近く優れてます。

[ + ]

Array
(
    [aaa] => 1
    [bbb] => 2
    [ccc] => 3
    [ddd] => 4
    [eee] => 5
    [fff] => 6
)

[ array_merge ]

Array
(
    [aaa] => 1
    [bbb] => 2
    [ccc] => 3
    [ddd] => 4
    [eee] => 5
    [fff] => 6
)

キーに同じものが含まれていると上書きにはなりません。

<?php

$arr1 = ["aaa" => 1, "bbb" => 2, "ccc" => 3];
$arr2 = ["aaa" => 4, "bbb" => 5, "ddd" => 6];

$result = $arr1 + $arr2;

print_r($result);

$result = array_merge($arr1,$arr2);

print_r($result);

実行結果

[ + ]

Array
(
    [aaa] => 1
    [bbb] => 2
    [ccc] => 3
    [ddd] => 6
)

[ array_merge ]

Array
(
    [aaa] => 4
    [bbb] => 5
    [ccc] => 3
    [ddd] => 6
)

また、引数が1つのみの場合はインデックス番号が0からに変更されます。

<?php

$arr = [11 => 1, 12 => 2, 13 => 3];

$result = array_merge($arr);

print_r($result);

実行結果

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