0

これが私の問題です。メソッドで静的変数を使用しています。そして、forループを使用して新しいインスタンスを作成します。

class test_for{

    function staticplus(){
        static $i=0;
        $i++;
        return $i;
    }

    function countplus() {
        $res = '';
        for($k=0 ; $k<3 ; $k++) {
            $res .= $this->staticplus();
        }
        return $res;
    }
}

for($j=0 ; $j<3 ; $j++) {
    $countp = new test_for;
    echo $countp->countplus().'</br>';
}

戻り値:

123
456
789

新しいインスタンスを作成するときに静的変数を初期化する方法はありますか?

123
123
123

ご協力いただきありがとうございます!

4

2 に答える 2

0

おそらく静的変数に res を入れてみてください:

public res 

function countplus() {
    $this->res = 0;
    for($k=0 ; $k<3 ; $k++) {
        $this->res .= $this->staticplus();
    }
    return $this->res;
}
于 2013-03-18T08:11:24.727 に答える
0

なぜこれが必要なのかわかりませんでしたが、その動作は実現できます。これを試して:

class test_for{

protected static $st;        // Declare a class variable (static)

public function __construct(){ // Magic... this is called at every new
    self::$st = 0;           // Reset static variable
}

function staticplus(){
    return ++self::$st;
}

function countplus() {
    $res = '';
    for($k=0 ; $k<3 ; $k++) {
        $res .= $this->staticplus();
    }
    return $res;
}
}

for($j=0 ; $j<3 ; $j++) {
   $countp = new test_for;
   echo $countp->countplus().'</br>';
}
于 2013-03-18T08:14:46.667 に答える