• ベストアンサー

PHPで以下のようなコードでエラーが出て原因が分かりません

function hoge($name){ $cb_list=""; for($i=1;$i<count($this->$name);$i++){ $cb_list .= $this->$name[$i+1]; } } としています。 $this->$nameの部分はクラスの中で設定した配列ですがその要素を取得できません。 どのようにしたら良いでしょうか? 関数内で print_r($this->$name); は表示されます。 教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>$this->$name[$i+1]; を、$this->{$name}[$i+1]とすればいけるはず。 ただし、配列の初期値が1になってるけどホントに大丈夫ですか? 普通は0から始めますね。 配列データを総なめするにはforじゃなくてforeachが良いです。 <? class fuga{ function fuga(){ $this->x=Array("x1","x2","x3"); $this->y=Array("y1","y2","y3"); $this->z=Array("z1","z2","z3"); } function hoge($name){ $cb_list=""; foreach($this->{$name} as $val){ $cb_list .= $val; } return $cb_list; } } $fuga=new fuga; print $fuga->hoge("x"); print $fuga->hoge("z"); ?>

eccschool
質問者

お礼

有難うございます。うまくいきました。foreachのほうがうまくいきますね。なるほどです。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

class を理解していない俺が回答するのもどうかと思いましたが、 もしかしたら、これが原因じゃないかな?と思ったのがあります。 print_r($this->$name); で、表示されるなら、 $names = $this->$name; for($i=1;$i<count($names);$i++){ $cb_list .= $names[$i+1]; } と、してみれば どうかな~とか思いました。

すると、全ての回答が全文表示されます。

関連するQ&A