dポイントプレゼントキャンペーン実施中!

$aに連想配列が入っているとして、
print "<pre>";print_r($a);print "</pre>";
  ↓
array
(
 [Return] => array
  (
   [data] => あいうえお
  )
)
このように連想配列の入った変数から
データを個別に取るとき
このように、配列名を並べると
print $a['Return']['data'];

あいうえお

と、個別に取り出せますが、

あるデータをprint_rすると、
stdClass Object
(
 [Return] => stdClass Object
  (
   [data] => あいうえお
  )
)
というふうに"stdClass Object"として出力されてしまいました。
stdClass Objectのデータを個別に取り出したいのですが
連想配列のような記述だとうまく取り出せません。
stdClass Objectのデータはどのようにして個別に取り出すのでしょうか?

A 回答 (3件)

stdClassならクラスなのでこんな風にアクセスするのでは?



print $a->Return->data;
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
->で階層を潜るんですね。

お礼日時:2008/01/28 18:12

直接stdClassを触らずに、アクセッサー付きのwrapperを作ったほうが手っ取り早いと思います



class dataClass extends stdClass {
public function set(){
//ご自由に
}
public function get(){
return $data;//お好みで
}
public function getArray(){
return array();//お好きなように
}
}

みたいな感じ
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2008/01/28 18:22

それはstdClassの設計如何によるでしょう。


stdClass内のReturnと言うメンバがstdClassのインスタンスで、dataというメンバを内包しているのであれば

$obj = new stdClass();
$arr = $obj->Return->data;
foreach($arr as $key => $value){ ... }

となります。$obj->Returnがコンストラクタなどで初期化されていればの話ですが。
配列とオブジェクトは全く別物として捉えましょう。
// というか自身のインスタンスを内部に保持するのはどうなんだろうと思いますけども。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お礼日時:2008/01/28 18:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!