【php】array_mergeで複数の配列を統合する方法

php-arra-mergephp
書いてる人
あいりゅー

プログラミングを学びながら更新しています。
iPhone/iPad/Mac/Apple WatchなどのApple製品はこちらで主に更新しています。
麻雀の反省をひたすら掲載してるブログもやってます。

あいりゅーをフォローする

このページについて

このページではphpで使えるarray_mergeの使い方解説を掲載しています。

array_merge

array_mergeは複数の配列をマージすることができます。マージとは統合という意味で、そのまんまですが複数の配列を1つの配列に統合することができる関数になります。

$a = [1,2,3,4];
$b = [5,6,7,8];
$c = array_merge($a,$b);

このように書いた場合、array_mergeの最初に書いた配列に対してあとから書いた配列の中身を統合します。つまり$cは

array_mergeの例

このように1から8まで順番に並んでいます。

連想配列とmergeについて

array_mergeは連想配列で使う時に注意が必要です。連想配列はキー=>値という組み合わせを1セットとして扱いますが、全く同じキーを持つ場合は後から統合した値が優先されます。つまり

$a=['a'=>1,'b'=>2];
$b=['a'=>3,'c'=>4];
array_merge($a,$b);

このように書いた場合のように、キーが重複する場合は後から書いた配列の値が優先されます。結果はこのようになります。

キーが重複する場合のarray_mergeの処理

$aの中にある1が後から統合した配列$bの3で上書きされているのがわかります。このように同じキーを含む場合は注意しましょう。

最初の連想配列の値を残す方法

array_mergeは同一キーがある場合は後から統合する配列の値を優先して残すと書きましたが、演算子を使うことでその処理を逆にすることができます。つまり後から統合する同一キーの値を破棄し、元々の値だけを残す処理になります。

$a=['a'=>1,'b'=>2];
$b=['a'=>3,'c'=>4];
$c = $a+$b;

このように書くと$bの最初の要素であるa=>3が無視されて、$aのa=>1が残ります。

配列演算子

array_pushとの違い

ここからはおまけですが、配列に要素を追加するという点ではarray_pushという関数も存在します。pushはどちらかというと「配列に対して値を複数追加する」ことに長けています。逆に言えば単一の値を追加したり、連想配列を扱うのは苦手ということになります。

もう1つ、配列同士を扱うときの処理にも差があります。mergeは今まで見てもらった通り、2つの配列を文字通り統合して1次元にして返してくれます。しかしpushは配列と配列を組み合わせた場合、多次元配列になります。その辺りで処理が異なってくる可能性が大いにあるのでそこだけ注意しましょう。例を挙げると以下のように結果が変わります。

array_pushとの処理の違い

まとめ

array_mergeは連想配列にも配列に対しても使うことができます。通常の配列だけならarray_pushと同じようにシンプルに追加するだけですが、その追加方法も少し異なります。それぞれの処理の特徴などをしっかり把握して適して方を使いましょう。

phpの基礎
phpとは?JavaScriptとの違いは?みたいなことから、基本の書き方などを解説。
echoとprint
画面に文字を出力する2種類の言語構造の使い方
変数
phpで使える変数の扱い方などを解説しています。
変数のスコープ(有効範囲)
変数のスコープについての解説です。
var_dump
変数の情報を見ることができる関数
print_r
変数の情報をわかりやすい形式で表示する関数
配列と連想配列
配列と連想配列の書き方と、便利な関数の解説など。
key
連想配列のキーを返してくれます。内部ポインタ関係あり。
count
配列や連想配列の要素数を数えてくれる関数の使い方解説。
ソート関数
配列に対してソートを行う関数の中から、代表的な5つの使い方解説です。
array_reverse
配列の中身の順番を反転させる関数です。
array_chunk
配列を指定した数で分割させるarray_chunk関数の使い方解説です。
array_combine
2つの配列を足して1つの連想配列にする関数です。
array_diff
2つの配列を比較して、存在しない値を出力する関数
array_push
配列に対して後方に要素を追加する関数
array_unshift
配列に対して先頭に要素を追加する関数。
array_shift
配列の先頭の要素を取り出す関数。
array_merge
複数の配列を統合して1次元の配列にする関数
array_intersect
2つの配列を比較して、両方に共通するものを出力する関数
include
includeを使って別のphpファイルを読み込む方法の解説。
if文
if文を使って処理を変更させる方法の解説。
switch文
switch文を使って複数の処理分岐を行わせたい時に使います。
forループ
forループを使って同じ処理を行わせる方法の解説です。
whileループ
whileループを使って同じ処理を行わせる方法の解説と注意点。
do-whileループ
do-whileループを使って同じ処理を行わせる方法の解説です。
foreachループ
foreachループを使って配列内のアイテム全てに処理を行う方法の解説です。
continue
ループ処理の残りをスキップしつつ、ループの先頭に戻る制御構造
ループのネスト構造(入れ子)
ループの中にループを入れる書き方や考え方の解説。
function
functionを使って自作の関数を作成・使用する方法の解説。
引数の種類と書き方解説
functionで扱う引数の種類と書き方を解説
return
returnの使い方と関数での使い方解説。
class
classを作成して変数と関数を1つにまとめる方法と使い方の解説。
constructとdestruct
classのインスタンス作成と同時に処理を行うconstructと、スクリプトの終了と同時に実行するdestructの解説です。
インターフェイス
インターフェイスという用語の解説と、実際の使い方解説
トレイト
コードを再利用するのに便利なトレイトの解説です。
列挙型
プログラム中で使う変数名をあらかじめ定義しておく。そんな感じの型。
PDOを使ってMySQLへ接続
PDOを使ってMySQLへ接続し、データを取得する方法の解説です。
データの加工と表示
PDOでデータベースから取得したデータを加工して表示する方法の解説です。
HTMLフォームのデータ受け取りと表示
HTMLで作ったフォームからのデータの受け取り方法と、その表示方法の解説です。
タイトルとURLをコピーしました