日々の中でシンプルに出来たコードをメモ的に貼っておこうと思います
パフォーマンス的な話もあるので採用するかはバランス次第
連想配列のKeyの有無でマージor追加
ある配列の内部に要素をマージしたいのですが、そのkeyがない場合があるのでその時には追加にしたい。
元のソース
keyが存在しないためarray_mergeの第一引数に記述するとエラーになるのでifで分岐していました
// $origin には $origin1 or $origin2 の2つのパターンが入ることがある(ユーザー入力など)
$origin1 = array(
'key1' => array(
'originHoge' => 'originFuga',
)
);
$origin2 = array(
'key2' => array(
'foo' => 'bar',
),
);
// key1には追加で情報を付与したい
$additional = array(
'hoge1' => 'fuga1',
'hoge2' => 'fuga2',
);
if (isset($origin['key1'])) {
$origin['key1'] = array_merge($origin['key1'], $additional);
} else {
$origin['key1'] = $additional;
}
改善したソース
追加用配列にもkeyを記述しておき array_merge_recursive
を用いるとif...else句
を記述する必要がなくなりました。同様のことを2回以上やってたりした場合は見通しが断然良くなりました。
// originは同じものを想定
$additional = array(
'key1' => array(
'hoge1' => 'fuga1',
'hoge2' => 'fuga2',
),
);
$origin = array_merge_recursive($origin, $additional);