本記事では、PHPで複数の配列・連想配列を結合する方法について解説しています。
PHPの学習におすすめ書籍
独習PHP 第4版
メリット
- PHPの基本構文からクラス・データベース連携・セキュリティまで学べる
- PHPによるWebアプリ開発の基礎・基本テクニックを学べる
ポチップ
先輩くん
Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!
初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
全プログラマー必見!
変数名/関数名にもう悩まない!
変数名/関数名にもう悩まない!
リーダブルコード
メリット
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
著:Dustin Boswell, 著:Trevor Foucher, 解説:須藤 功平, 翻訳:角 征典
¥2,640 (2023/07/23 02:48時点 | Amazon調べ)
目次
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 [1] => reading [2] => soccer [3] => 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 [1] => soccer ) [gender] => male )
hobbyの値が配列になり、array_merge関数で削除された「reading」が残ったまま連想配列の結合がされたことが確認できます。