我有一个像这样的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++;
}
谢谢。
答案 0 :(得分:1)
您的{$this->$key[$this->counter]=0;}
声明错误。它应该是
if( $key != 'counter' ) {
$this->{$key}[$this->counter] = 0;
}
(注意$key
周围的大括号。)
变量名称的更复杂的动态表达式需要括号语法。
答案 1 :(得分:0)
您可以这样做: -
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()
作为构造函数名称,而不是与该类同名的方法。