【PHP】配列とオブジェクトの違いとは(超初心者向)
PHPに限らず、javaなどのオブジェクト指向型のプログラミング言語をはじめたころはたいていぶつかる問題です。
オブジェクトを配列同様に捉えて配列のようにデータを取り出そうとする勘違い。
これはたいていの場合、変数の内容を「var_dump()」を使って確かめたときに起こります。
- 何気なくデバック中に「var_dump()」で変数の中身をみると、なんか配列っぽい。
- (配列と思い込み)配列だから、配列の値を取り出そう。
- 『Fatal error(E_ERROR): Cannot use object of type ・・・ as array on・・・』
なにこのエラー・・・。
たいていこんなエラーが出てしばし悩むかと思います。
オブジェクトは配列ではないので要素番号やキー文字列だけでは当然取り出せません。
オブジェクトと配列の違いは、以下の二点。
- 配列は、データのみをもっている。
- オブジェクトは、データと操作をセットでもっている。
入ってるものがそもそも違うので、データなり定数やメソッドなどは取り出しかたがまったく違います。
わかりにくくなるときは「is_object()」なり「is_array()」をつかって調べましょう。