PHP

【PHP】「Cannot use object of type stdClass as array in」の解決方法

phpで書いたプログラムを実行したら、画面が真っ白!!

エラーログを見てみたら、「Uncaught Error: Cannot use object of type stdClass as array in ….」って書いてある。

これはいったいどういうことなんだろう?

このエラー文を日本語に訳すと、

「stdClassオブジェクトを配列として使用することはできません。」

という意味です。

つまり、このエラーが出てきたということは

あなたがstdClassオブジェクトが格納された変数を、配列だと思って使ってしまっている

ということです。

なので「Cannot use object of type stdClass as array in」を解決するためには、

1. stdClassオブジェクトの正しい使い方を理解する

2, stdClassオブジェクトを連想配列に変換する

の2通りがあるわけですよね。

順番に解説していきます。

(1)のstdClassオブジェクトの正しい使い方はというと、

連想配列の場合は$arr[key]というふうに参照していたのが、

stdClassオブジェクトの場合には$std->keyになっただけです。

stdClassオブジェクトの場合はforeach文が使えなくなるので、for文を頑張って使いましょう。

(2)のstdClassオブジェクトを連想配列に変換する方法としては、以下のような方法があります。

エンコードしてデコードしてっていうのが少し気持ち悪い気もしますが、動きます。

これは、

一度stdClassオブジェクトである$stdをjsonにエンコードしたものを、連想配列にデコードしています。

このときにjson_encode()の第二引数にtrueを指定することを忘れないようにしましょう。

あわせて読みたい

ABOUT ME
miyadiary.net
当サイトを管理しています。IT(プログラミング)、旅行、アニメ関係などを中心とした総合ブログです。 私は主にIT技術についての記事を書いています。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です