【PHP入門】配列を結合する3つの方法を比較

PHPで配列を結合する方法

PHPで複数の配列を結合(マージ)してひとつにまとめるにはarray_merge関数を使う方法、array_merge_recursive関数を使う方法、配列結合演算子+を使う方法があります。これらの違いと使い方を解説します。

目次

array_merge関数の使い方

結合する配列が、添字配列(キーが数字の配列)なのか連想配列(キーが文字列の配列)なのかによって、結合のされかたが異なります。

添字配列の場合

添字配列を結合した場合は、引数として渡した配列の値が渡した順番通りに結合されます。添字(キー)は新たに0から振り直されます。

//配列の準備
$array1 = array('ソムリエ', '鳶職', 'YouTuber');
$array2 = array('2.5次元俳優', 'ハイパーメディアクリエイター', '傭兵');

//結合
$array = array_merge($array1, $array2);

//結果の出力
print_r($array);

/*結果
Array
(
    [0] => ソムリエ
    [1] => 鳶職
    [2] => YouTuber
    [3] => 2.5次元俳優
    [4] => ハイパーメディアクリエイター
    [5] => 傭兵
)
*/

ここでは2つの配列を結合していますが、array_merge($array1, $array2, $array3 ...)のようにいくつでも結合することができます。

連想配列の場合

連想配列を結合した場合、同じキーの値は後から追加した配列で上書きされます。

//配列の準備
$array1 = array('名前' => 'マチルダ', '年齢' => 36, '職業' => '傭兵');
$array2 = array('名前' => '権蔵', '年齢' => 69, '職業' => '鳶職');
$array3 = array('名前' => '光宙');

//結合
$array = array_merge($array1, $array2, $array3);

//結果の出力
print_r($array);

/*結果
Array
(
    [名前] => 光宙
    [年齢] => 69
    [職業] => 鳶職
)
*/

array_merge_recursive関数の使い方

配列を再帰的に結合する関数です。再帰的ってなんじゃおんどりゃ解るように説明しさらせやクソボケがと思いましたよね。私もそう思いました(育ちが悪い)。次の例を見ていただけば解ると思います。

添字配列の場合

添字配列を結合した場合の挙動はarray_mergeとまったく同じです。

//配列の準備
$array1 = array('ソムリエ', '鳶職', 'YouTuber');
$array2 = array('2.5次元俳優', 'ハイパーメディアクリエイター', '傭兵');

//結合
$array = array_merge_recursive($array1, $array2);

//結果の出力
print_r($array);

/*結果
Array
(
    [0] => ソムリエ
    [1] => 鳶職
    [2] => YouTuber
    [3] => 2.5次元俳優
    [4] => ハイパーメディアクリエイター
    [5] => 傭兵
)
*/

連想配列の場合

連想配列を結合した場合、同じキーの値は上書きされずに、そのキーの下に配列として追加されていきます。

//配列の準備
$array1 = array('名前' => 'マチルダ', '年齢' => 36, '職業' => '傭兵');
$array2 = array('名前' => '権蔵', '年齢' => 69, '職業' => '鳶職');
$array3 = array('名前' => '光宙');

//結合
$array = array_merge_recursive($array1, $array2, $array3);

//結果の出力
print_r($array);

/*結果
Array
(
    [名前] => Array
        (
            [0] => マチルダ
            [1] => 権蔵
            [2] => 光宙
        )

    [年齢] => Array
        (
            [0] => 36
            [1] => 69
        )

    [職業] => Array
        (
            [0] => 傭兵
            [1] => 鳶職
        )

)
*/

配列結合演算子の使い方

配列結合演算子+を使った場合は、添字配列か連想配列かに関わらず同じ動作をします。同じキーが存在する場合は、先にある配列が優先されます。

//配列の準備
$array1 = array('ソムリエ', '鳶職', 'YouTuber');
$array2 = array('2.5次元俳優', 'ハイパーメディアクリエイター', '傭兵');

//結合
$array = $array1 + $array2;

//結果の出力
print_r($array);

/*結果
Array
(
    [0] => ソムリエ
    [1] => 鳶職
    [2] => YouTuber
)
*/

//配列の準備
$array1 = array('名前' => 'マチルダ', '年齢' => 36, '職業' => '傭兵');
$array2 = array('名前' => '権蔵', '年齢' => 69, '職業' => '鳶職');

//結合
$array = $array1 + $array2;

//結果の出力
print_r($array);

/*結果
Array
(
    [名前] => マチルダ
    [年齢] => 36
    [職業] => 傭兵
)
*/

キーが異なっていれば足した順番通りに結合されます。ただし、添字配列であってもキーの振り直しはされません。

//配列の準備
$array1 = array(0 => 'ソムリエ', 1 => '鳶職', 2 => 'YouTuber');
$array2 = array(7 => '2.5次元俳優', 8 => 'ハイパーメディアクリエイター', 9 => '傭兵');
$array3 = array(3 => 'インフルエンサー');

//結合
$array = $array1 + $array2 + $array3;

//結果の出力
echo '<pre>';
print_r($array);
echo '</pre>';

/*結果
Array
(
    [0] => ソムリエ
    [1] => 鳶職
    [2] => YouTuber
    [7] => 2.5次元俳優
    [8] => ハイパーメディアクリエイター
    [9] => 傭兵
    [3] => インフルエンサー
)
*/

3つの方法の比較

結合の方法添字配列連想配列
array_merge キーが重複していてもすべての値が残る
結合後のキーは振り直される
キーが重複していれば後ろの配列の値が優先される
array_merge_recursive キーが重複していてもすべての値が残る
結合後のキーは振り直される
キーが重複していてもすべての値が配列で残る
+キーが重複していれば前の配列の値が優先される
結合後のキーは振り直されない
キーが重複していれば前の配列の値が優先される

さいごに

配列を結合する方法について解説しましたが、なかなかややこしいですよね。こんなん覚えるの無理ですよね。覚えなくていいんです。その都度調べましょう。

でわでわ

激安プログラミングスクールのご紹介

独学は難しいと感じているあなたには、プログラミングスクールをオススメします。

  • 入会金不要、月額2,980円〜でプログラミングを学べる。
  • オンラインで学べるので地方在住者でも受講可能。
  • 現役エンジニアとのマンツーマンレッスンも月1回〜可能。
  • 回答率100%のQ&A掲示板に質問し放題。
  • 40種類以上の教材が学習し放題。HTML/CSS, JavaScript, PHP, Ruby, Python, WordPress, SQL などなど他にも盛りだくさん。
PHPで配列を結合する方法

この記事が気に入ったら
いいね または フォローしてね!

シェアしてね

コメント

コメントする

目次