PHPで配列を連結する方法:array_merge()

PHPでは配列を操作する便利な関数が多数用意されています。今回は複数の配列を一つに連結する array_merge()を紹介します。

複数の配列を連結する

例えば以下のような配列があるとします。

$data1 = array(5, 8, 9, 15);
$data2 = array(3, 10, 8, 12);

この配列を1つの配列に連結したいとします。この場合、foreachなどを使って配列を連結していく方法もありますが、array_merge()を使うと簡単に連結できます。

<?php
$data1 = array(5, 8, 9, 15);
$data2 = array(3, 10, 8, 12);
$data3 = array_merge($data1, $data2);
print_r($data3);
?>

このとき、$dataは以下のようになります。

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

このように最初の配列の後ろに2番目の配列が連結されます。

配列を3つ連結させたい場合にも引数を増やしていくだけです。

$data = array_merge($data1, $data2, $data3);

連想配列の場合

文字列をキーとする連想配列の場合も基本的な動きは同じですが、同じキーがある場合が異なります。文字列の同じキーがある場合、後方の配列で上書きされます。

例えば、以下のような配列があるとします。

$data1 = array("apple" => 100, "orange" => 120);
$data2 = array("melon" => 500, "apple" => 200);

$data1にも$data2にもappleというキーがあり、$data1は100、$data2は200です。この2つの配列をarray_merge()で連結してみます。

<?php
$data1 = array("apple" => 100, "orange" => 120);
$data2 = array("melon" => 500, "apple" => 200);
$data3 = array_merge($data1, $data2);
print_r($data3);
?>

この場合、以下のようになります。

Array
(
    [apple] => 200
    [orange] => 120
    [melon] => 500
)

apple、orange、melon、と2つの配列の内容が連結されていますが、appleは$data1の内容(100)が$data2の内容(200)で上書きされています。


イベント

2017/12/05(火)
Design Thinking Square