[PHP-users 25820] Re: クラスに配列を渡す

Yoshihiro Hanahara hanahara @ meiko.co.jp
2005年 6月 13日 (月) 19:48:03 JST


花原@明宏です。


On Mon, 13 Jun 2005 19:17:37 +0900
Tybalt of Capulet <ice-man @ tomato.ne.jp> wrote:

>   function B() {
>     foreach ( $this->$id as $idval ) {
>       // ここに処理
>     }
>   }

foreach文の「 $this->$id  」は 「 $this->id 」ではないでしょうか?
idの前の「$」を取ります。

PHPのハマリやすい注意点ですね。


元のコードでも、以下のようにすれば動きますが、

   function B() {
     $id = 'id';
     foreach ( $this->$id as $idval ) {
       // ここに処理
     }
   }

そゆことではないですよね(^_^;)。
PHPは名前と変数・関数・メソッド名などを実行時動的バインディングしてるっ
てことですね。以下、その例。

    $x = 'B';
    $c->$x();   // $c->B()と同じ。

確認は、PHP4.3.11でした。

---
Yoshihiro Hanahara <hanahara @ meiko . co . jp>




PHP-users メーリングリストの案内