質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

3248閲覧

array_mergeとarray + arrayの違いはなんですか?(PHP)

rmyekcw

総合スコア14

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2014/10/18 17:47

現在PHPの勉強中ですが、下記の内容の違いがよくわかりません。分かる方がおられましたら教えて下さい。

lang

1$array1 = array('color'=>'赤', 'shape'=>'丸'); 2$array2 = array('color'=>'緑', 'shape'=>'長方形'); 3 4<1> 5$merge1 = array_merge($array1, $array2); 6 7<2> 8$merge2 = $array1 + $array2;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

初めましてrmyekcwさん、回答失礼いたします。
array_mergeによる配列の結合と、+演算子による配列の結合の違いを
教えてくださいとのことですが、わかる限りでお答えさせていただきたいと思います。

まず、根本的な違いとしては、kenshiroさんが仰っているように、重複しているキーの対応だと思います。
こちらについては、kenshiroさまが、詳細にお答えしてるので、簡単なコードを載せるだけにしておきます。

lang

1<?php 2 3 $array1 = array('color'=>'赤', 'shape'=>'丸'); 4 $array2 = array('color'=>'緑', 'shape'=>'長方形'); 5 6 $merge1 = array_merge($array1,$array2); 7 var_dump($merge1); 8 // ["color"]=> 9 // string(3) "緑" 10 // ["shape"]=> 11 // string(9) "長方形" 12 13 $merge2 = $array1 + $array2; 14 var_dump($merge2); 15 // ["color"]=> 16 // string(3) "赤" 17 // ["shape"]=> 18 // string(3) "丸" 19?>

これも同じく重複するキーへの対応になるのですが、
上の例で示したような、連想配列ではなく通常の配列、
数値が添字の配列に対する挙動についてお書きしたいと思います。

lang

1<? 2 $array1 = array('赤','丸'); 3 $array2 = array('緑','長方形'); 4 5 $merge1 = array_merge($array1,$array2); 6 var_dump($merge1); 7 // [0]=> 8 // string(3) "緑" 9 // [1]=> 10 // string(9) "長方形" 11 // [2]=> 12 // string(3) "赤" 13 // [3]=> 14 // string(3) "丸" 15 16 $merge2 = $array1 + $array2; 17 var_dump($merge2); 18 // [0]=> 19 // string(3) "緑" 20 // [1]=> 21 // string(9) "長方形" 22?>

こちらのコードの配列は、細かく書くと以下のようになります。

lang

1 $array1 = array([0] => '赤', [1] => '丸'); 2 $array2 = array([0] => '緑', [1] => '長方形');

+演算子を使って数値添字の配列を結合させると、
そのまま上書きしてしまうため、以下のようになってしまう。

// [0]=> // string(3) "緑" // [1]=> // string(9) "長方形"

それに対して、array_mergeで数値添字の配列を結合させると、
結合後、数値添字を0から順に割り振って、全ての値を保持してくれる。

// [0]=> // string(3) "緑" // [1]=> // string(9) "長方形" // [2]=> // string(3) "赤" // [3]=> // string(3) "丸"

以上の様に些細な挙動の変化はありますが、
それほど致命的な差異はないので、どちらでも、
気に入った方を使っていけばいいのではないでしょうか。

投稿2014/10/27 15:27

rui3718

総合スコア113

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

下記の配列の場合

lang

1$array1 = array('color'=>'赤', 'shape'=>'丸'); 2$array2 = array('color'=>'緑', 'shape'=>'長方形'); 3

2つの内容の違いは、array_merge関数は二つの配列の結合を取ります。重複しているキーは上書きされます。

lang

1Array 2( 3[color] => 緑 4[shape] => 長方形 5)

「+」の演算子の場合は、二つの配列を結合になります。最初の配列のキーはそのまま残ります。

両方の配列に同じキーが存在する場合は最初の配列のものが残り、 二番目の配列の内容は無視されます。

lang

1Array 2( 3[color] => 赤 4[shape] => 丸 5)

投稿2014/10/20 07:30

kenshiro

総合スコア407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問