在循环中设置类属性


Set up class properties in a loop

我有一个类似的php类

class data{
    var $counter;
    var $a;
    var $b;
    var $c;
    var $d;
    var $e;
    var $f;
    var $g;
    var $h;
    var $etc;
    function data(){$this->counter=0;}
    function addvalue($value){
        $this->a[$this->counter]=$value;
        $this->b[$this->counter]=0;
        $this->c[$this->counter]=0;
        $this->d[$this->counter]=0;
        $this->e[$this->counter]=0;
        $this->f[$this->counter]=0;
        $this->g[$this->counter]=0;
        $this->h[$this->counter]=0;
        $this->etc[$this->counter]=0;
        $this->counter++;
    }
}

然后,类的对象

if(isset($_SESSION['data'])==0){
    $_SESSION['data']=new data();
}

代码是有效的,但我很好奇是否可以在foreach循环中设置所有具有相同值的属性:"0"。我尝试过这种方法,但没有成功:

function addvalue($value){
    foreach($this as $key => $value){
        if($key!='counter'){$this->$key[$this->counter]=0;}
    }
    $this->a[$this->counter]=$value;
    $this->counter++;
}

谢谢。

{$this->$key[$this->counter]=0;}语句出错。应该是

if( $key != 'counter' ) {
    $this->{$key}[$this->counter] = 0;
}

(请注意$key周围的大括号)。

变量名的更复杂的动态表达式需要大括号语法。

您可以简单地执行以下操作:-

class data{
    var $counter = 0;
    var $a = 0;
    var $b = 0;
    var $c = 0;
    var $d = 0;
    var $e = 0;
    var $f = 0;
    var $g = 0;
    var $h = 0;
    var $etc = 0;
}

指定默认值。如果这就是你想要达到的目标,我不能百分之百确定。

我想我应该指出,PHP现在使用__construct()作为构造函数名称,而不是与类同名的方法。