uiuifree.com

- サイト制作のノウハウと最適化を目指して-

2020.11.16【PHP】配列に要素を追加する方法

【PHP】配列に要素を追加する方法

    配列に要素を追加するにはarray_pushやarray_mergeを使ったり演算子を使った結合する等いくつか方法があります。この記事ではPHPで要素を追加する方法を紹介していきます。

    配列の末尾に要素を追加する

    [] を使用して要素を末尾に追加

    配列のキーも指定できる[]、空のまま実行することで自動的に要素の末尾に追加されます。

    $変数名[] = 値; 
    <?php
    $array = [
        '赤色',
        '青色',
    ];
    
    $array[] = '黄色';
    var_dump($array);
    array(3) {
      [0]=>
      string(6) "赤色"
      [1]=>
      string(6) "青色"
      [2]=>
      string(6) "黄色"
    }

    []は簡潔に記述できるので使い勝手が良く一番利用します。

    array_pushを使用して要素を末尾に追加

    array_pushは要素を配列の最後に追加する関数です。

    array_push ( array &$array , mixed ...$values ) : int

    第三引数以降にも値を追加してあげることで、要素をまとめて追加することもできます。

    >>>array_pushのリファレンス

    $color = [
        '赤色',
        '青色',
    ];
    
    array_push($color, 'ピンク');
    var_dump($color);
    array(3) {
      [0]=>
      string(6) "赤色"
      [1]=>
      string(6) "青色"
      [2]=>
      string(9) "ピンク"
    }

    配列と配列の要素を結合する

    スプレッド演算子を使って配列を結合する

    PHP7.4からはスプレッド演算子...を使って配列の結合ができるようになりました。 スプレッド演算子はコンパイルの最適化が行われており、array_mergeで実行するよりも高速に動作します。開発している環境がPHP7.4以降であればarray_mergeを使わずにスプレッド演算子を使うようにしましょう。

    $newColor = [
        'ピンク',
        'オレンジ',
        'パープル',
    ];
    $color = [
        '赤色',
        '青色',
        ...$newColor
    ];
    var_dump($color);
    array(5) {
      [0]=>
      string(6) "赤色"
      [1]=>
      string(6) "青色"
      [2]=>
      string(9) "ピンク"
      [3]=>
      string(12) "オレンジ"
      [4]=>
      string(12) "パープル"
    }

    array_mergeを使って配列を結合する

    スプレッド演算子が登場するまで使われていた配列の結合関数です。機能は同じで配列同士を結合します。

    array_merge ( array ...$arrays ) : array

    >>>array_mergeのリファレンス

    $newColor = [
        'ピンク',
        'オレンジ',
        'パープル',
    ];
    $color = [
        '赤色',
        '青色',
    ];
    var_dump(array_merge($color, $newColor));
    array(5) {
      [0]=>
      string(6) "赤色"
      [1]=>
      string(6) "青色"
      [2]=>
      string(9) "ピンク"
      [3]=>
      string(12) "オレンジ"
      [4]=>
      string(12) "パープル"
    }

    配列の差分を結合する

    +演算子で配列の差分を結合する

    配列の添字が重複していない部分だけ結合する方法です。

    $newColor = [
        'red' => 'Red',
        'orange' => 'Orange',
    ];
    $color = [
        'red' => '赤色',
        'blue' => '青色',
    ];
    var_dump($color += $newColor);
    array(3) {
      ["red"]=>
      string(6) "赤色"
      ["blue"]=>
      string(6) "青色"
      ["orange"]=>
      string(6) "Orange"
    }

    配列の先頭に要素を追加する

    array_unshift

    array_unshiftは配列の最初に要素加える関数です。

    array_unshift ( array &$array , mixed ...$values ) : int

    >>>array_unshiftのリファレンス

    $color = [
        '赤色',
        '青色',
    ];
    array_unshift($color,'オレンジ');
    var_dump($color);
    array(3) {
      [0]=>
      string(12) "オレンジ"
      [1]=>
      string(6) "赤色"
      [2]=>
      string(6) "青色"
    }

    まとめ

    配列操作の「配列の末尾に要素を追加」「配列の先頭に要素を追加」「配列の要素を結合」、どれも開発ではよく使う手法になります。どれも少しずつ挙動が違うので効率よく開発するために覚えてみてください。