記事最終更新日:2017年09月06日

記事投稿日:2016年10月11日

閲覧数:949 views

array_mergeの使い方メモ -【PHP】

はじめに

今回のD.M.C.【デベメモドットコム】の記事は「array_mergeの使い方」ということで、PHPの中でも個人的に気に入っていて便利なので詳しくメモ(解説)していきたいと思います。

はじめに「array_merge」関数を使って何が出来るのかというと、複数ある配列を一つの配列に結合させる事が出来ます。少しイメージがつきにくいかもしれませんが、基本的な使い方をこの記事では詳しく解説していけたらと思います。

基本的な使い方

ではまず、「array_merge」関数を使用する為に、準備をしていきましょう。下記では「$params01」変数と「$params02」変数に数値の要素を持たした配列を代入しています。

そして「array_merge」関数の第1引数と第2引数に指定して、結果を「$result」変数に代入し、最後に「print_r」関数で出力させています。

<?php

$params01 = [1, 2, 3, 4, 5];
$params02 = [6, 7, 8, 9, 10];

$result = array_merge($params01, $params02);

echo '<pre>';
print_r($result);
echo '</pre>';

「print_r」関数で出力された「$result」変数の中身が下記コードになっています。

この実行結果を見てわかる通り始めに定義した二つの配列変数が一つに結合されているのがわかると思います。

実行結果

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 10
)

二つ以上の配列を結合方法

では次に「array_merge」関数で2つ以上の配列を結合させる方法を解説していきます。

まずは下記コードを見てください。

<?php

$params01 = [1, 2, 3, 4, 5];
$params02 = [6, 7, 8, 9, 10];
$params03 = [11, 12, 13, 14, 15];
$params04 = [16, 17, 18, 19, 20];
$params05 = [21, 22, 23, 24, 25];

$result = array_merge($params01, $params02, $params03, $params04, $params05);

echo '<pre>';
print_r($result);
echo '</pre>';

「基本的な使い方では二つの配列を結合させましたが、「array_merge」関数はもっとたくさんの配列を結合させる事ができます。上記では「$params01」〜「$params05」までの配列変数を定義して、「array_merge」関数の引数として全て指定しています。

そして結果を「$result」変数に代入して「print_r」関数で表示させています。

実行結果

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 10
    [10] => 11
    [11] => 12
    [12] => 13
    [13] => 14
    [14] => 15
    [15] => 16
    [16] => 17
    [17] => 18
    [18] => 19
    [19] => 20
    [20] => 21
    [21] => 22
    [22] => 23
    [23] => 24
    [24] => 25
)

連想配列の結合方法

いままでの解説ではインデックス配列の結合のみを説明してきましたが、「array_merge」関数はインデックス配列だけではなく、連想配列も結合させる事ができます。

ではさっそく下記コードを見てください。

<?php

$params01 = [
    'key01' => 'value01',
    'key02' => 'value02',
    'key03' => 'value03',
];


$params02 = [
    'key01' => 'overwrite01',
    'key02' => 'overwrite02',
    'key03' => 'value03',
    'key04' => 'value04',
    'key05' => 'value05',
];


$result = array_merge($params01, $params02);

echo '<pre>';
print_r($result);
echo '</pre>';

まず始めに「$params01」変数と「$params02」変数にキーバリュー形式の連想配列を代入しています。

そして「array_merge」関数に引数として指定して「print_r」関数で結果を表示させています。

実はインデックス配列も連想配列を使い方自体は同じになっています。

ただ連想配列を指定している場合は同じ名前のキーがある場合は、後に指定した引数の配列で上書きされるようになっているので注意してください。

「print_r」関数の実行結果が下記になっています。

実行結果

Array
(
    [key01] => overwrite01
    [key02] => overwrite02
    [key03] => value03
    [key04] => value04
    [key05] => value05
)

第1引数で指定された配列の1つ目のキーの値が、第2引数で指定された配列の同じ名前のキーの値で上書きされています。

そして第1引数で指定された配列と第2引数で指定された配列が結合し第1引数には無かった要素ができているのがわかると思います。これが基本的な連想配列の結合方法です。

応用的な使い方

「array_merge」関数の応用的な使い方をひとつだけ紹介したいと思います。

よくあるのがクラスメソッドや関数で初期値としてデフォルト値を設定しておく方法です。メリットとしては実際に処理内容を書く際に設定値をよく使うと思うのですが、あらかじめ初期値を設定する事によって後から無駄な条件分岐などを挟まずにそのまま値を使用して処理していく事ができる場面なんかではないでしょうか。

下記コードを見てみてください。

<?php

    function testMethod($params = [])
    {
        $data = array_merge([
               'default01' => 'value01',
               'default02' => 'value02',
               'default03' => 'value03',
               'default04' => 'value04',
               'default05' => 'value05',
        ], $params);

        // $data配列を使って色々と処理を書いていく
    }

    $params = [
        'default01' => 'overwrite01',
        'default02' => 'overwrite02',
        'default03' => 'value03',
        'default04' => 'value04',
        'default05' => 'value05',
    ];

    testMethod($params);

ユーザ定義関数の「testMethod」関数を見ていただくと、実行時に上書きしたい場合は配列を指定する事もでき、指定しない場合はそのままのデフォルト値を使えるというメリットがあります。こういった処理は始めに書く事があるので覚えておくといいかもしれません。

今回「array_merge」関数の使い方を解説していきましたが、もう少し詳しくarray_merge関数に知りたい方は下記のPHP公式ドキュメントを参照してください。

PHPドキュメント日本語版 array_merge

PHPドキュメント英語版 array_merge

感想

今回紹介した「array_merge」関数は便利なので個人的に凄くオススメです。

PHPには本当にたくさんの関数があって便利なんですが、沢山ありすぎて知らないものが凄く多いので当サイト(D.M.C.)では実際に使ってみて本当に使える関数なんかをこれからも発見次第、紹介していけたらと思います。

About / ブログについて

D.M.C. / デベメモドットコム

D.M.C.【デベメモドットコム】はWEB制作に関することを中心に、 その他、関連する事まで出来るだけわかりやすく備忘録としてメモを残していくブログです。
このブログを通して少しでも為になる情報を発信して皆さんと共有できればとても嬉しいです。

ページトップへ

Categories

Tags