LoginSignup
6
8

More than 5 years have passed since last update.

PHP ソース改善Tips

Last updated at Posted at 2016-08-25

日々の中でシンプルに出来たコードをメモ的に貼っておこうと思います
パフォーマンス的な話もあるので採用するかはバランス次第

連想配列の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);

6
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8