🍎

【PHP】配列の結合

2021/11/09に公開

使用する配列

$fruitsA = [
	0 => 'apple',
	1 => 'banana',
	'a' => 'cherry',
];

$fruitsB = [
	1 => 'orange',
        2 => 'lemon',
        'a' => 'mango',
        'b' => 'peach',
];

+演算子

print_r($fruitsA + $fruitsB);
//結果
Array
(
    [0] => apple
    [1] => banana
    [a] => cherry  //$fruitsAの値が優先
    [2] => lemon
    [b] => peach
)

//空配列の場合
print_r($fruitsA + []);
//結果
[
   0 => 'apple',
   1 => 'banana',
   'a' => 'cherry',
]
print_r([] + $fruitsA);
//結果
[
   0 => 'apple',
   1 => 'banana',
   'a' => 'cherry',
]
  • 同じ添え字のものは$fruitsAのものが優先される。
    • なので数字が添字の単純な配列同士の結合はarray_merge()のほうがいいかもしれない
  • 空配列と結合する場合は空ではない方の配列の値がそのまま残る。

array_merge()

print_r(array_merge($fruitsA, $fruitsB);
//結果
[
    [0] => apple
    [1] => banana
    [a] => mango //$fruitsBの値が優先
    [2] => orange
    [3] => lemon
    [b] => peach
]

//空配列の場合
print_r(array_merge($fruitsA, []);
//結果
[
   0 => 'apple',
   1 => 'banana',
   'a' => 'cherry',
]
print_r(array_merge([], $fruitsA);
//結果
[
   0 => 'apple',
   1 => 'banana',
   'a' => 'cherry',
]
  • 添字が文字列の場合は$fruitsBが優先される。
  • 添字が数字のものはすべて上書きされずに残る。
  • 添字は振り直される。
  • 空配列と結合する場合は空ではない方の配列の値がそのまま残る

https://www.php.net/manual/ja/function.array-merge.php

https://www.php.net/manual/ja/language.operators.array.php

Discussion