配列に要素がなければ追加、あれば何もしない
例えば以下2つの配列があるとします。
$list_1 = array( 'hoge' => 1, 'fuga' => 2, ); $list_2 = array( 'fuga' => 20, 'piyo' => 30, );
これについて、以下操作をしたい場合。
- $list_1になくて$list_2にあるキーに対する要素を$list_1に追加する
- $list_1にあって$list_2にもあるキーに対する要素については(値が違っても)何もしない
- $list_1にあって$list_2にないキーに対する要素については何もしない
要するに$list_1を以下の状態にしたい場合ですね。
array( 'hoge' => 1, 'fuga' => 2, 'piyo' => 30, );
なんと以下の1行でOK。
$list_1 += $list_2;
ちなみに以下の状態にしたい場合(同じキーで$list_2にある場合は更新したい場合)はarray_mergeでOK。
array( 'hoge' => 1, 'fuga' => 2, 'piyo' => 30, );
$list_1 = array_merge(list_1, $list_2);
いや待てよ、それなら
$list_1 = $list_2 + $list_1;
で結果的に同じになるんじゃないか?
(要素の順番は変わるけども)
簡単な連想配列なら別にどっちでもいいかも?
連想配列でない場合はarray_mergeだとキーが振りなおされたりするので使い分けが必要だけども…
気が向いたらまとめなおします。
参考
PHPで連想配列にkeyが存在したら値を追加しない、存在しなければ値を追加する、の書き方 - こんにちはこんにちはmonmonです!
PHP: array_merge - Manual