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
)
-
前の記事
node.js sqliteと接続してテーブルを作成する 2021.06.16
-
次の記事
javascript 配列からnull以外のデータを抽出する 2021.06.17
コメントを書く