PHPで「Cannot use object of type stdClass as array in … 」というエラーが出たら

PHP2

「Cannot use object of type stdClass as array in …」

PHPで配列だと思っていたものを利用した時に、上記の書き出しで始まるエラーが出たら。

これは、配列じゃないものを配列として扱おうとしたことによって出たエラーです。
一番ありがちなのは、連想配列だと思ったらオブジェクトだったというパターンです。

試しにPHPのprint_r関数で出力すればすぐわかります。

配列なら『Array([text]=>』といった書き出しですが、オブジェクトなら『stdClass Object([text] =>』といった書き出しです。

※[]内はその時々で違います

もし、上記の例で扱う予定の変数が$value、アクセスする要素の名前がtextだとすると、それぞれ下記のように記述する必要があります。

配列:$value[text]
オブジェクト:$value->text

なお、配列ならforeachで回せますが、オブジェクトの場合は出来ません。
同じようにエラーが出てしまうので気をつけましょう。


コメントを残す