PHPで配列に要素などを追加する方法はいくつかありますが、みなさんどれを選択されますか?
配列の最後に追加したり、先頭に追加したり、結合したりとさまざまです。今回は配列に追加する主要な方法を紐解きます。
なんとなく使っていた人も、コレで一気に理解が深まり、目的別に使い分けることができるようになるでしょう。
連想配列に追加する方法はこちら
目次
配列の最後に要素を追加
[ ](角カッコ)で追加
配列に追加する際、一番シンプルなのは[]
(角カッコ)による追加です。
オーバーヘッドによる処理もないため、動作が速いのが特長です。
1 2 3 4 5 6 7 8 9 10 |
// 3人の名前が入った配列を変数に格納 $members = array('nagasawa', 'kitagawa', 'nishina'); // 配列の最後に3人追加 $members[] = 'shinoda'; $members[] = 'sano'; $members[] = 'sakuraba'; // 6人で出力される print_r($members); |
Array ( [0] => nagasawa [1] => kitagawa [2] => nishina [3] => shinoda [4] => sano [5] => sakuraba )
shinoda
sano
sakuraba
が配列の最後に追加され、6人で出力されました。
[ ](角カッコ)による値追加の構文
$追加したい配列の変数[] = 追加する値
上記のように追加したい配列に[]
(角カッコ)を付けて=
(イコール)で代入すると、どんどん値が配列に追加されます。
あまりにも数が膨大になると大変ですが、追加する値が少なければこの方法が良いでしょう。
array_push関数で追加
配列に追加する際によく使われるのがarray_push()
による追加です。
これは関数のオーバーヘッドが発生するため[]
(角カッコ)による追加よりは多少処理が重くなるかとは思いますが、複数の配列を一気に追加する際に便利です。
1 2 3 4 5 6 7 8 |
// 3人の名前が入った配列を変数に格納 $members = array('nagasawa', 'kitagawa', 'nishina'); // 配列の最後に3人追加 array_push($members, 'shinoda', 'sano', 'sakuraba'); // 6人で出力される print_r($members); |
Array ( [0] => nagasawa [1] => kitagawa [2] => nishina [3] => shinoda [4] => sano [5] => sakuraba )
先ほどの[]
(角カッコ)を使った追加方法と同じ動作ですが、関数呼び出しのオーバーヘッドがある分、体感速度は変わらないでしょうが処理は多少重いようです。
array_pushの構文
array_push ( 追加先の配列 , 追加する値 (, 追加する値…) );
追加したい配列を第一引数に設定し、第二引数以降は追加する値をカンマ区切りで追加していきます。
追加する値が多い場合はarray_push()
を使うと良いでしょう。
array_pushのエラー
array_push()
の第一引数は必ず配列じゃないといけません。
配列以外だと以下のエラーが出ます。
Fatal error: Only variables can be passed by reference in…
配列に追加してください。
配列の後ろに配列を追加
array_merge関数で追加
先ほどは要素を追加しましたが、今回は配列を追加します。
ただ、ほとんど同様の結果が得られるでしょう。
1 2 3 4 5 6 7 8 |
// 3人の名前が入った配列を変数に格納 $members = array('nagasawa', 'kitagawa', 'nishina'); // 配列の最後に、3人の名前が入った配列をさらに追加 $members = array_merge($members, array('shinoda', 'sano', 'sakuraba')); // 6人で出力される print_r($members); |
Array ( [0] => nagasawa [1] => kitagawa [2] => nishina [3] => shinoda [4] => sano [5] => sakuraba )
array_push()
と結果は同じですね。
array_mergeの構文
array_merge ( 追加先の配列 , 追加する配列 (,追加する配列…));
配列は1つだけじゃなく、複数追加可能です。
連想配列ではarray_push()
が使えないためarray_merge()
で追加しているのをよく見かけますが、通常の配列ではarray_push()
か[]
(角カッコ)による追加が一般的でしょう。
配列の先頭に要素を追加する
array_unshift関数で追加
array_push()
と反対で、配列の先頭に要素を追加します。
あまり見かけませんが、意外と便利です。
1 2 3 4 5 6 7 8 |
// 3人の名前が入った配列を変数に格納 $members = array('nagasawa', 'kitagawa', 'nishina'); // 配列の先頭に3人追加 array_unshift($members, 'shinoda', 'sano', 'sakuraba'); // 6人で出力される print_r($members); |
Array ( [0] => shinoda [1] => sano [2] => sakuraba [3] => nagasawa [4] => kitagawa [5] => nishina )
先頭に3人追加されました。
新しいデータが、先頭にドンドン追加されていくようなプログラムに便利な関数ですね。
array_unshiftの構文
array_unshift ( 追加先の配列, 追加する値 (, 追加する値…) );
array_push()
の先頭に追加バージョンなので、構文も似ています。
array_unshift()
で設定した順番どおりに、そのまま先頭に追加され、キーは0
から始まる連番に振り直されます。
ちなみに、連想配列で+
演算子による追加方法がありますが、通常の配列では追加できません。
連想配列に追加する
連想配列ではarray_push()
が使えなかったり[]
(角カッコ)による追加もほとんど使えません。
array_merge()
で追加するか+
演算子や+=
での代入が一般的です。
詳しくは、以下記事をご参照ください。