PHPのarray_mergeで配列の足し算をする

PHPでは+演算子で配列の足し算ができる!

PHPは便利で、配列の足し算ができます!

たとえばこんな風に、ユーザー情報の配列とログイン情報の配列があって、これらをまとめてひとつの配列にしたい時に使うことができます。

$user = array(
    ‘name’=>’katty’,
    ‘background’=>’black’,
    ‘url’=>’http://choilog.com/’
);
$login = array(
    ‘id’=>’12345’,
    ‘password’=>’abcde’
);
print_r($user + $login);

結果は次のようになります。

Array
(
    [name] => katty
    [background] => black
    [url] => http://choilog.com/
    [id] => 12345
    [password] => abcde
)

使っているのは、ただの+演算子です。簡単です。

array_mergeでも配列の足し算ができる

+演算子でなく、array_mergeという関数を使っても、配列の足し算ができます。

array_merge($user,$login)

この場合は、結果は全く同じになります。

+演算子とarray_mergeの違い

  • +演算子は、上書きをしない
  • array_mergeは、上書きをする

というのが大きな違いだと思います。

$default = array(
    ‘phptype’=>’mysql’,
    ‘username’=>’root’,
    ‘password’=>”,
    ‘hostspec’=>’localhost’,
    ‘database’=>’choilog’
);
$config = array(
    ‘password’=>’abcde’,
    ‘options’=>’charset=utf8’
);
print_r($default + $config);
print_r(array_merge($default, $config));

このように$defaultという設定配列に$configという配列を組み合わせて、データベース設定を作るような場合を考えます。

+演算子の場合($default + $config)

+演算子の場合、passwordの要素は演算子の左の配列に最初からありましたので、上書きされません。optionsの要素は左の配列になかったので、追加されます。

Array
(
    [phptype] => mysql
    [username] => root
    [password] =>
    [hostspec] => localhost
    [database] => choilog
    [options] => charset=utf8
)

array_mergeの場合(array_merge($default, $config))

array_mergeの場合、passwordの要素は第1引数の配列に最初からありますが、上書きされます。optionsの要素も、追加されます。

Array
(
    [phptype] => mysql
    [username] => root
    [password] => abcde
    [hostspec] => localhost
    [database] => choilog
    [options] => charset=utf8
)

コメント

タイトルとURLをコピーしました