PHPでは、配列を結合するための便利な関数が用意されています。
この記事では、
・array_merge関数の使い方
・array_merge_recursive関数の使い方
という基本的な内容から、
・配列に文字列を結合する方法
・配列に値を追加するさまざまな方法
などの応用的な使い方に関しても解説していきます。
ここではそんなarray_merge関数を使用した結合方法などについて、分かりやすく解説します!
配列を結合してみよう!
ここでは、array_merge関数とarray_merge_recursive関数を使用した配列の結合方法について解説します。
array_merge関数の使い方
配列の要素の最後にひとつまたは複数の配列を結合するときは、array_merge関数を使用します。
array_merge関数は以下のように記述します。
書き方:
array array_merge ( array $配列 [, 追加する配列 $... ] )
引数:
第一引数には対象の配列を指定します。
以降の引数では追加する配列を1つまたは複数指定します。
返り値:
対象の配列の最後に配列を追加することにより、ひとつまたは複数の配列をマージし、マージした結果の配列を返します。
一次元配列を結合する
以下に一次元配列を結合するサンプルプログラムを紹介します。
サンプルプログラム1
//配列を作成 $array1 = [1, 2, 3]; $array2 = [10, 20, 30]; $array3 = [100, 200, 300]; //配列を結合する $array = array_merge($array1, $array2, $array3); print_r($array);
実行結果:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 10 [4] => 20 [5] => 30 [6] => 100 [7] => 200 [8] => 300 )
サンプルプログラムでは、array_merge関数を使用して、配列$array1の後ろに$array2、$array3を指定しています。
実行結果のとおり指定した配列が結合されていることがわかりますね!
以下のように文字列の配列ももちろん結合できます。
サンプルプログラム2
//配列を作成 $fruits1 = ['apple', 'orange', 'melon', 'banana', 'pineapple']; $fruits2 = ['strawberry', 'cherry', 'watermelon']; $fruits3 = ['anzu', 'papaya']; //配列を結合する $fruits_merge = array_merge($fruits1, $fruits2, $fruits3); print_r($fruits_merge);
実行結果:
Array ( [0] => apple [1] => orange [2] => melon [3] => banana [4] => pineapple [5] => strawberry [6] => cherry [7] => watermelon [8] => anzu [9] => papaya )
連想配列を結合する
連想配列も一次元配列同様にarray_merge関数を使用して、配列を結合することが可能です。
以下に連想配列を結合するサンプルプログラムを紹介します。
サンプルプログラム
//配列を作成 $fruits1 = [ 0=>'apple', 1=>'orange', 2=>'melon', 3=>'banana', 4=>'pineapple' ]; $fruits2 = [ 0=>'strawberry', 1=>'cherry', 2=>'watermelon' ]; //配列をマージする $fruits_merge = array_merge($fruits1, $fruits2); print_r($fruits_merge);
実行結果:
Array ( [0] => apple [1] => orange [2] => melon [3] => banana [4] => pineapple [5] => strawberry [6] => cherry [7] => watermelon )
実行結果のとおり、array_merge関数を使用すれば、連想配列も結合できることがわかりますね!
しかし、配列$fruits2では$fruits1と重複しているKey値である0,1,2を指定しています。
このようにKey値に数値が重複していた場合は、ゼロから始まる連続した数値に置き換えられます。
そのため、今回では$fruits2のKey値が0,1,2から5,6,7に置き換えられています。
array_merge_recursive関数の使い方
2つ以上の配列を再帰的にマージするにはarray_merge_recursive関数を使用します。
基本的には前述したarray_merge関数同様に、配列の要素の最後に指定した配列を結合します。
しかし、keyの添字が文字列の場合は、値を上書きしないで同じ文字列同士で配列を作成します。
添字が数値の場合の動作はarray_merge関数と同様です。
array_merge_recursive関数は以下のように記述します。
書き方:
array array_merge_recursive ( array $配列 [, 追加する配列 $... ] )
引数:
第一引数には対象の配列を指定します。
以降の引数で追加する配列を指定します。
返り値:
対象の配列の最後に配列を追加することにより、ひとつまたは複数の配列をマージし、マージした結果の配列を返します。
以下にarray_merge_recursive関数で配列同士を結合するサンプルプログラムを紹介します。
サンプルプログラム
//連想配列を作成 $fruits1 = [ 'key1'=>'apple', 'key2'=>'orange', 'key3'=>'melon', 'key4'=>'banana', 'key5'=>'pineapple' ]; $fruits2 = [ 'key1'=>'strawberry', 'key2'=>'cherry', 'key3'=>'watermelon' ]; //配列をマージする $fruits_merge = array_merge_recursive($fruits1, $fruits2); print_r($fruits_merge);
実行結果:
Array ( [key1] => Array ( [0] => apple [1] => strawberry ) [key2] => Array ( [0] => orange [1] => cherry ) [key3] => Array ( [0] => melon [1] => watermelon ) [key4] => banana [key5] => pineapple )
前述したようにarray_merge_recursive関数は、Key値の添字が文字列の場合は、同じ文字列同士で配列を作成します。
プラス(+)演算子で結合する
プラス(+)演算子を使用することでもarray_merge関数と同様に配列を結合することができます。
プラス演算子で配列を結合するには「$配列1 + $配列2」のように記述します。
以下にプラス演算子を使用して配列を結合するサンプルを紹介します。
サンプルプログラム1
$fruits1 = [ 'item1' => 'apple', 'item2' => 'orange', 'item3' => 'melon']; $fruits2 = [ 'item4' => 'banana', 'item5' => 'pineapple']; $fruits = $fruits1 + $fruits2; print_r($fruits);
実行結果:
Array ( [item1] => apple [item2] => orange [item3] => melon [item4] => banana [item5] => pineapple )
上記のようにプラス演算子を使用することでも、配列が結合されることがわかりますね!
このようにarray_merge関数を使わなくても、プラス演算子で配列の結合は可能ですが注意点があります。
プラス演算子は配列1の後ろに配列2が結合されるのではなく、配列のキーが重複していた場合は、先の配列のキーが優先されます。
例えば、以下のように結合したい配列のキーが重複していたら、結合する配列の値は破棄されてしまいます。
サンプルプログラム2
$fruits1 = [ 'item1' => 'apple', 'item2' => 'orange', 'item3' => 'melon']; $fruits2 = [ 'item1' => 'banana', 'item2' => 'pineapple']; $fruits = $fruits1 + $fruits2; print_r($fruits);
実行結果:
Array ( [item1] => apple [item2] => orange [item3] => melon )
配列に文字列を結合(implode)
配列と文字列を結合したい場合はimplode関数を使用します。
具体的には配列の要素間にimplodeで指定した文字列をはさんで、1つの文字列として取得します。
サンプルプログラム
$fruits = ['apple', 'orange', 'melon']; //implodeを使用して配列の要素にカンマ','を結合する $str = implode(',', $fruits); echo $str;
実行結果:
apple,orange,melon
implode関数の詳しい使い方については、以下の記事の「implodeの使い方」で詳しく解説しています!
配列に値を追加する方法まとめ
配列に値を追加したい場合は以下のような方法があります。
- 角括弧([])を使用する
- array_push関数を使用して値を追加する
- array_unshift関数で配列の先頭に値を追加
- array_splice関数で配列の指定した位置に値を追加する
そんな配列にさまざまな値を追加する方法については、以下の記事で詳しく解説しています!
PHPについてもっと知りたい方へ
「PHPについて実はいまいちわかっていない・・・」
「もっとPHPについて詳しく知りたい!」
と思っている方は以下の記事も参考にしてみてください!
まとめ
ここでは配列に配列を結合する方法として、
- array_merge関数を使用した配列の結合する方法
- array_merge_recursive関数を使用した配列の結合する方法
- プラス演算子で配列を結合する方法
- 配列に文字列を結合する方法
などについて解説しました。
配列同士を結合するときにarray_merge関数はよく使用しますので、使い方はよく理解しておきましょう。
もしarray_merge関数の使い方を忘れてしまったら、この記事を思い出してくださいね!