PHPの連想配列の操作「追加、変更、削除」について解説します。
連想配列はデータベースで取得したレコードなどでよく使いますので、頑張って身につけましょう!
連想配列に分からない方は「【PHP入門】配列、連想配列を使ってみよう!」の記事を読んでいただければと思います。
まずは連想配列の操作は「どんなことができるのか」の感覚だけでもつかんでもらえればOKですので、さらっと読んでください。
配列については、「【PHP入門】配列の追加、変更、削除をしてみよう!」で解説していますので、配列が分からない方はこちらも読んでみてください。
それでは行きましょう!
目次
連想配列に要素を追加
連想配列に要素を追加する方法を3つ紹介します。
[] で追加
1つ目は、[] で追加する方法です。
[キー名] で指定した要素に値を入れて追加できます。
次の例では、配列に「watermelon => すいか」を追加するソースを書いてみます。
<?php $arr = array("banana" => "バナナ", "strawberry" => "イチゴ"); // 「すいか」を追加 $arr["watermelon"] = "すいか"; var_dump($arr); ?>
実行結果:

このように「すいか」を追加することができました。
+ 演算子で追加
2つ目は、+ 演算子で追加する方法です。
「配列 + 配列」することで配列同士を結合して追加しています。
「バナナ、イチゴ」の配列に「すいか、マンゴー」を追加してみます。
<?php $arr = array("banana" => "バナナ", "strawberry" => "イチゴ"); // + 演算子で追加 $arr = $arr + array("watermelon" => "すいか", "mango" => "マンゴー"); var_dump($arr); ?>
実行結果:

このように「すいか、マンゴー」が追加できました。
array_merge()で追加
3つ目は、arraymerge() 関数を使用して配列同士を結合して追加します。
+ 演算子と同じく「すいか、マンゴー」を追加してみます。
<?php $arr = array("banana" => "バナナ", "strawberry" => "イチゴ"); // 関数で追加 $arr = array_merge($arr, array("watermelon" => "すいか", "mango" => "マンゴー")); var_dump($arr); ?>
このソースコードは、+ 演算子と同じ結果になります。
+ 演算子とarray_merge() の違い
+ 演算子と使い方の基本は同じですが、同じキーがある場合の動きが異なるので注意が必要です。
まずは、+ 演算子で「イチゴ」を同じキー”strawberry”の「苺」で配列追加してみます。
<?php $arr = array("banana" => "バナナ", "strawberry" => "イチゴ"); // + 演算子で同じキーを追加しても「イチゴ」のまま $arr = $arr + array("strawberry" => "苺"); var_dump($arr); ?>
実行結果:

上記のように、+ 演算子では同じキーの値は追加されません。
次にarray_merge() 関数で「苺」を追加してみます。
<?php $arr = array("banana" => "バナナ", "strawberry" => "イチゴ"); // array_mergeで同じキーを追加すると「苺」に変更される $arr = array_merge($arr, array("strawberry" => "苺")); var_dump($arr); ?>
実行結果:

同じキーの”strawberry”が「苺」に変わりました。
このように、array_merge() 関数は同じキーは値を上書きされるようです。
連想配列の値を変更
連想配列の値を変更してみたいと思います。
指定キーの値を変更
次のソースコードでは、連想配列のキー”strawberry”を指定して「イチゴ」を「苺」に値を変更します。
<?php $arr = array("banana" => "バナナ", "strawberry" => "イチゴ"); // 「イチゴ」を漢字の「苺」に変更する $arr["strawberry"] = "苺"; var_dump($arr); ?>
実行結果:

同じキー”strawberry”の値「イチゴ」が「苺」変わりましたね。
ループ条件の中で値を変更
連想配列をforeachでループしながら条件に一致した場合、値が変更されるようにソースコードを書いてみます。
<?php $arr = array("banana" => "バナナ", "strawberry" => "イチゴ"); // 連想配列をループしてキーが「strawberry」なら値を「苺」に変更する foreach ($arr as $key => $val) { if ($key == "strawberry") { $arr[$key] = "苺"; } } var_dump($arr); ?>
「指定キーの値を変更」と同じ結果で、キー”strawberry”の時に「イチゴ」が「苺」に変更されました。
連想配列の値を変更する場合は、このようにループしながらの使い方が多いです。
連想配列の削除
最後にunset() 関数を使用した連想配列の要素削除を紹介します。
unset() で指定の要素を削除
unset() 関数にキー指定した連想配列をセットして呼ぶと、指定の要素を削除することができます。
次のソースコードでは、キー”strawberry”の要素をunset() 関数に引数セットして削除しています。
<?php $arr = array( "banana" => "バナナ", "strawberry" => "イチゴ", "watermelon" => "すいか" ); // イチゴを削除 unset($arr["strawberry"]); var_dump($arr); ?>
実行結果:

「”strawberry” => “イチゴ”」が削除されました。
unset() で配列のすべてを削除
unset() を使うと変数を破棄することができます。
連想配列に限らずですが、変数であればstring型でもint型でも使用できます。
次のソースコードでは、連想配列の変数「$arr」を削除しています。
<?php $arr = array( "banana" => "バナナ", "strawberry" => "イチゴ", "watermelon" => "すいか" ); // 連想配列の変数を削除 unset($arr); var_dump($arr); ?>
実行結果:

PHPのNoticeエラーが表示されてしまいました。
これは「13行目で宣言されていない変数が使われていますよ」とPHPが警告を出しています。
ソースコードを見てみると11行目で$arrが削除されて、13行目のvar_dumpで変数「$arr」を呼ぼうとしてエラーになっているようです。
なので、unset() した後は変数を再度宣言するか、使わないようにするなどして気をつける必要があります。
まとめ
PHPの連想配列について次の内容で解説しました。
- 連想配列の要素の追加([]、+ 演算子、array_merge)
- 連想配列の値を変更(キー指定、ループ)
- 連想配列の要素の削除(キー指定、すべて)
連想配列の追加・変更・削除について色々と解説しましたが、
まずは「連想配列でこんなことができるんだ!」の感覚で覚えてみてください。
プログラミングはあくまで「コンピューターを動かすための手段」ですので、手段ばかりを時間かけて覚えるより「どんなことができるか?」を覚えることの方が大事です。
「どんなことがしたいか」が決まって、実際に連想配列でプログラミングするときにこの記事をじっくり見ていただければ幸いです。
プログラミング学習を挫折せずに続けて成功できる人は
- 「目的目標を明確にすること」
- 「質問・相談できる環境を作ること」
- 「自己解決スキルを身に着けること」
この3つを大切にしてると思います。
ただ漠然とプログラミング学習をしているだけでは
すぐに身に付きませんので、プログラミングスクールがおすすめです。
-
テックキャンプ
本気でIT業界に転職したい方におすすめです。
転職できなかったら全額返金があります。 -
DMM WEBCAMP
国から認定されているスクールです。
やむなく離職中の方など、条件を満たしている方は教育訓練給付金が支給されます。 -
TechAcademy
1週間の無料体験があります。
気軽にスクールを体験したい方向けです。