本記事では、PHPで複数の配列・連想配列を結合する方法について解説しています。
PHPの学習におすすめ参考書
気づけばプロ並みPHP 改訂版–ゼロから作れる人になる!
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
後輩ちゃん
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!
array_merge関数の使い方
複数の配列・連想配列を結合したい場合は、array_merge関数を使用します。基本的な使い方は以下のとおりです。
$result = array_merge(...$arrays);
構文解説
- $result:結合された新しい配列が返される
- …$arrays:結合したい配列を(,)区切りで指定する
array_merge関数を使用して、複数の配列・連想配列を結合するサンプルコードを用意したので、動作確認してみましょう。
<?php
$hobbyArr1 = ['soccer', 'reading'];
$hobbyArr2 = ['soccer', 'fishing'];
$result = array_merge($hobbyArr1, $hobbyArr2);
print_r($result); // Array ( [0] => soccer
=> reading
=> soccer
=> fishing )
配列の変数$hobbyArr1と$hobbyArr2は「soccer」が重複しています。このような場合array_merge関数は重複したものを削除せず結合を行います。
続いて、連想配列でarray_merge関数を使用した時の動作確認をしてみましょう。
<?php
$personArr1 = ['name' => 'Ken', 'age' => 20, 'hobby' => 'reading'];
$personArr2 = ['gender' => 'male', 'hobby' => 'soccer'];
$result = array_merge($personArr1, $personArr2);
print_r($result); // Array ( [name] => Ken [age] => 20 [hobby] => soccer [gender] => male )
連想配列の変数$personArr1と$personArr2はkeyの「hobby」が重複しています。配列の場合は重複したものを削除せず結合を行いましたが、連想配列の場合は後から出現した値に上書きします。
array_merge_recursive関数の使い方
もし、連想配列の結合で上書きするのではなく配列を生成しどちらの値も残しておきたい場合はarray_merge_recursive関数を使用します。使い方はarray_merge関数と同じです。
<?php
$personArr1 = ['name' => 'Ken', 'age' => 20, 'hobby' => 'reading'];
$personArr2 = ['gender' => 'male', 'hobby' => 'soccer'];
$result = array_merge_recursive($personArr1, $personArr2);
print_r($result); // Array ( [name] => Ken [age] => 20 [hobby] => Array ( [0] => reading
=> soccer ) [gender] => male )
hobbyの値が配列になり、array_merge関数で削除された「reading」が残ったまま連想配列の結合がされたことが確認できます。