PHPのオブジェクトを配列に変換/出力する方法

この記事は次のブログに引っ越しました。

PHPで変数の中身がオブジェクトであった場合、配列に変換するには2通りの方法があります。 "(array)"を付けて代入しなおす(キャストする)方法 "get_object_vars"関数を使う方法 ※多次元配列のオブジェクトの場合、1階層までしか変換しないので、foreachなどで処理する必要があります。 ※もし、JSON形式のデータを取得して"json_decode"関数で変換する場合は、第二引数をTRUEにすると戻り値は、オブジェクトではなく配列になります。 ※オブジェクトのメンバー変数にprivate,protectedが使われている場合注意点があります。下記「注意点」参照。 ■所感 WEBサービスなどのAPIを使う際に、レスポンス(結果)のフォーマットがXML形式やJSON形式で返ってくる場合、PHP5の場合だとsimpleXML関数やjson_decode関数などを使う事があると思います。 どちらの関数もオブジェクトで結果を返してくるのですが、プログラムによっては結果のデータが配列の方が便利な場合があります。 json_decode関数であれば、第二引数をTRUEにすると配列で返してくれるのですが、simpleXMLのように、そうでない関数もあります。 オブジェクトもforeachで処理できるし、クラスを利用しているならオブジェクトの方が便利なのですが、何かと配列の方が都合がいい場合に。 ただ、APIの相手方のWEBサービスPHPのデータをSERIALIZEして出力してくれれば、こちら(利用側)もUNSERIALIZEで使えるので、自前の環境ならそちらの方がいいかも。 ■参考:PHP: 配列 - Manual 注意点 オブジェクト内のデータ(メンバー変数)がpublic意外のprivate, protectedが使われている場合、配列の添字となるメンバー変数名の前にオブジェクト名や"*"記号が付きます。問題は、その際の添字にnullバイト(\0)が付くので、ブラウザによっては表示されないため注意が必要です。 シンプルなクラス、オブジェクトデータの利用のみと考えていいでしょう。 ■参考資料:スカラー値を配列にキャストする【PHP】 - Programming Magic