PHPでは配列を操作する便利な関数が多数用意されています。今回は複数の配列を一つに連結する array_merge()を紹介します。
複数の配列を連結する
例えば以下のような配列があるとします。
1 2 |
$data1 = array(5, 8, 9, 15); $data2 = array(3, 10, 8, 12); |
この配列を1つの配列に連結したいとします。この場合、foreachなどを使って配列を連結していく方法もありますが、array_merge()を使うと簡単に連結できます。
1 2 3 4 5 6 |
<?php $data1 = array(5, 8, 9, 15); $data2 = array(3, 10, 8, 12); $data3 = array_merge($data1, $data2); print_r($data3); ?> |
このとき、$dataは以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 |
Array ( [0] => 5 [1] => 8 [2] => 9 [3] => 15 [4] => 3 [5] => 10 [6] => 8 [7] => 12 ) |
このように最初の配列の後ろに2番目の配列が連結されます。
配列を3つ連結させたい場合にも引数を増やしていくだけです。
1 |
$data = array_merge($data1, $data2, $data3); |
連想配列の場合
文字列をキーとする連想配列の場合も基本的な動きは同じですが、同じキーがある場合が異なります。文字列の同じキーがある場合、後方の配列で上書きされます。
例えば、以下のような配列があるとします。
1 2 |
$data1 = array("apple" => 100, "orange" => 120); $data2 = array("melon" => 500, "apple" => 200); |
$data1にも$data2にもappleというキーがあり、$data1は100、$data2は200です。この2つの配列をarray_merge()で連結してみます。
1 2 3 4 5 6 |
<?php $data1 = array("apple" => 100, "orange" => 120); $data2 = array("melon" => 500, "apple" => 200); $data3 = array_merge($data1, $data2); print_r($data3); ?> |
この場合、以下のようになります。
1 2 3 4 5 6 |
Array ( [apple] => 200 [orange] => 120 [melon] => 500 ) |
apple、orange、melon、と2つの配列の内容が連結されていますが、appleは$data1の内容(100)が$data2の内容(200)で上書きされています。