PHPで配列に配列を追加する方法を解説!

PHPで配列に配列を追加する方法についてご紹介します。多次元配列へPHPでの代入方法について、インデックスの変化に注目しながら解説していきます。

コンテンツ [表示]

  1. 1PHPで配列に配列を追加したい
  2. 2PHPで配列に配列を追加する方法
  3. 2.1PHPの繰り返し処理で配列に配列を追加する
  4. 2.2PHPで配列と配列をマージ(結合)する
  5. 2.3PHPで最初の配列を上書きせずに配列を追加する

PHPで配列に配列を追加したい

配列の中に配列が入っている構造を多次元配列と言います。

PHPで配列に要素を追加する場合、下記サンプル1 の様に記述しますが、多次元な配列の場合は変数の後に[]を付けてサンプル2 の様に記述すると変数の最後に配列が追加されます。

サンプル1(PHPで配列へ要素を追加)

$variable = '赤';

サンプル2(PHPで多次元な配列へ配列を追加)

$variable[] = ['code' => 'red', 'name' => '赤'];

サンプルコードで実際に配列の変化を見てみましょう。

配列に配列を追加する事ができました。

それでは次に、複数の配列を追加する方法についてご紹介していきたいと思います。

PHPで配列に配列を追加する方法

PHPの繰り返し処理で配列に配列を追加する

追加したい配列分、繰り返し処理を行いながら、変数へ配列を追加しています。

PHPで配列と配列をマージ(結合)する

array_merge()は、配列へ配列を追加するのですが、マージ(結合)しながら追加する事ができます。

array_merge()の使い方

array_merge()の引き数に配列をセットすると、結合された1つの配列が戻り値となります。

引き数には複数の配列をセットする事が出来ます。

array_merge

$result = array_merge(['code' => 'red', 'name' => '赤'], ['code' => 'blue', 'name' => '青']);

array_merge()の注意事項

マージされた配列が添字配列の場合、インデックスが0から再採番されますが、配列が連想配列の場合は、インデックスが変化する事はありません。

連想配列でインデックスが同じキーの配列が存在する場合、後者の配列の値によって上書きされます。

それではarray_merge()の実行結果をサンプルコードで見て行きましょう。

配列 $variable1

$variable1 = [
    'A' => ['code' => 'red', 'name' => '赤'],
    'B' => ['code' => 'blue', 'name' => '青'],
    'C' => ['code' => 'yellow', 'name' => '黄'],
];

配列 $variable2

$variable2 = [
    'D' => ['code' => 'green', 'name' => '緑'],
    'E' => ['code' => 'white', 'name' => '白'],
    'C' => ['code' => 'yellow', 'name' => '黄色'],
];

上記3つの配列をarray_merge()した結果が下記サンプルコードです。

Cの値「黄」が「黄色」で上書きされていますね。重複したインデックスの値の変化がわかります。

PHPで最初の配列を上書きせずに配列を追加する

array_merge()では、マージする最初の配列要素は、後者の配列要素で上書きされますが、最初の配列要素の中身を変えずにマージするには配列結合演算子 +を用います。

配列結合演算子 +

$result = $variable1 + $variable2;

最初の配列要素が変わっていない事をサンプルコードで確認してみましょう。

配列 $variable1

$variable1 = [
    'A' => ['code' => 'red', 'name' => '赤'],
    'B' => ['code' => 'blue', 'name' => '青'],
    'C' => ['code' => 'yellow', 'name' => '黄'],
];

配列 $variable2

$variable2 = [
    'D' => ['code' => 'green', 'name' => '緑'],
    'E' => ['code' => 'white', 'name' => '白'],
    'C' => ['code' => 'yellow', 'name' => '黄色'],
];

上記の変数$variable1と変数$variable2配を配列結合演算子 +で追加してみます。

Cの値は「黄」のままですね。インデックスが重複していても、最初の配列の値が上書きされていない事が確認できました。

GeekHive採用サイト

関連記事