ある程度『PHP』などのプログラミング言語をやっていると必ずといっていいほど目にするキーワード。
『オブジェクト』と『連想配列』。
この2つの区別がなかなか曖昧で、わかってるようでわかっていなかったので、
まるっとまとめてみることにしました。
オブジェクトと連想配列の作り方
『連想配列』ってこんなのです。
//こっちは連想配列 $array = [ "like" => "ぎょうざ", "hobby" => "プログラミング", ];
『オブジェクト』ってこんなのです。
//こっちはオブジェクト class object{ public $like = "お好み焼き"; public $hobby = "ロードバイク"; }
と思わず突っ込んでしまうほど似ている『オブジェクト』と『連想配列』。
ぱっと見ほとんど一緒なんですが、よくよく見ればちょっとずつ違っています。
連想配列・・keyとvalueがセット。
今回の場合は、
好きな食べ物(key) => ぎょうざ (value)
趣味(key) => プログラミング (value)
という組み合わせになっています。
keyとvalueの間を => (ダブルアロー演算子)で指定しているのも特徴です。
関連記事
オブジェクト
最初にclass オブジェクト名(今回はobject) と書いて、なみかっこ { } の中に値を入れていきます。
『オブジェクト』の中に変数や関数を書いていくんですが、今回は、
like という変数に、『お好み焼き』という文字を入れて、
hobby という変数に、『ロードバイク』という文字をいれています。
クラスの中の変数のことをなぜか『プロパティ』と呼ぶことになってたりします。
関連記事
一行ずつセミコロン ; で区切っているのも特徴です。
オブジェクトと連想配列の呼び出し方
『連想配列』の呼び出し方はこんな感じ。
//こっちは連想配列 $array = [ "like" => "ぎょうざ", "hobby" => "プログラミング", ]; //連想配列の中身を表示 (var_dumpはお約束) var_dump($array); echo "<br>"; //読みやすくするための改行 //連想配列は [] で呼び出す echo $array["like"]; echo "<br>";
『オブジェクト』の呼び出し方。
//こっちはオブジェクト class object{ public $like = "お好み焼き"; public $hobby = "ロードバイク"; } //オブジェクト(クラス)はnewでインスタンス化(実体化) $objectTest = new object; //インスタンス(実体)の中身を表示 var_dump($objectTest); echo "<br>"; //オブジェクト(インスタンス)は -> で呼び出す echo $objectTest->like;
『連想配列』の方は
$array[“like”];
で呼び出すのに対し、
『オブジェクト』の方は、
クラスをインスタンス化(実体化)させた後に、
$objectTest->like;
と 矢印(アロー演算子) からの 変数名(プロパティ) を指定することで、呼び出すことができます。
オブジェクトか連想配列かの判別方法
オブジェクトかどうかを判別する関数や、
配列かどうかを判別する関数はあるのですが、
とりあえず var_dump しておけばOKです。
先ほどのコードを実行するとこんな表示になります。
array(2) { ["like"]=> string(12) "ぎょうざ" ["hobby"]=> string(21) "プログラミング" } ぎょうざ object(object)#1 (2) { ["like"]=> string(15) "お好み焼き" ["hobby"]=> string(18) "ロードバイク" } お好み焼き
頭にarrayと書いてあったら『配列(もしくは連想配列)』で、
頭に object と書いてあれば『オブジェクト』ですね。
オブジェクトなのに $object[“like”] 的な書き方をしてもうまく呼び出せないし、
逆もしかりなので、
どちらのデータ型を使っているか把握しながらプログラミングしていく必要があるんですね。
オブジェクトと連想配列はお互いに変換もできちゃう
これまたややこしいことに、
『連想配列』を『オブジェクト』に変換する方法もあれば、
『オブジェクト』を『連想配列』に変換する方法もあります。
参考記事
PHPで連想配列をオブジェクトにする
参考記事
【PHP】オブジェクトを連想配列に変換する方法まとめ
と思い調べてみるに、
- 『連想配列』にするメリット・・後からデータを足したり削除したりしやすい
- 『オブジェクト』にするメリット・・メソッド(関数)が使えるようになる(修正しやすい)
と、それぞれメリットがあるようで、
用途に合わせて使い分けできるようになると、仕事はかどりそうです。
参考記事
配列をオブジェクトにするメリット
オブジェクトと連想配列をまとめてみて
『連想配列』と『オブジェクト』。
ぱっと見 そっくりな両者ですが、
よくよく調べていくうちに、それぞれの違いや長所、メリットなんかがわかるようになってきました。
どっちのデータを触っているか迷ったらまずは var_dump で調べて、
『連想配列』と『オブジェクト』それぞれにあった使い方をしていけるようになるといいですね。
2020/2/7 追記
オブジェクトや連想配列、多次元配列の解説を盛り込んだ講座をつくってみましたので、
ぜひご確認くださいませ。
『PHP(Laravel)』ではこんな記事も読まれています。
1. 【PHP/Laravel】初心者向けの動画をリリースしました【Udemy】2. 【Laravel(PHP)】初心者向け アプリのつくり方 をリリースしました【techpit】
3. 【PHP】【Laravel】CSVエクスポートの方法〜5つのポイント〜
4. 【PHP】オブジェクトと連想配列の違いについて調べてみた【初心者向け】
5. 【PHP】CSVインポートの方法〜大量データもバルクインサートでバッチリ!〜【laravel】
6. 【PHP】【図解】クラスと抽象クラスとインターフェースとトレイトとDIをまとめてみた【初心者向け】
7. 【PHP】配列や連想配列が覚えづらかったので学校に例えてみた【初心者向け】
8. 【PHP】ホームページに天気予報を表示させる方法【Webスクレイピング】【初心者向け】
9. 【Laravel】Webアプリ環境構築の仕方【Vue.js】【初心者向け】
10. 【PHP】2次元(多次元)配列でデータ取得したいならarray_columnがめっさ便利
アオキのツイッターアカウント。
この記事へのコメントはありません。