我有这个代码:
$arrayOfData = array("Data1", "Data2", "Data3", "Data4", "Data5", "Data6", "Data7", "Data8", "Data9");
var $dataCounter = 0;
var $setCounter = 1;
foreach($arrayOfData as $row => $value){
$this->$dataCounter++;
if($this->$dataCounter == 3){
$this->$setCounter++;
$this->$dataCounter = 0;
}
}
当我回显$this->$setCounter时,我得到的只是0。我使用的是PHP 4,我的语法正确吗?我的foreach在类中的一个函数中。我的变量在类中。
由于这似乎不在类中,不,这是不正确的。$this->
是不必要和不正确的,就像你对var
的使用一样。
var $setCounter = 1;
// ...
$this->$setCounter++;
只需要:
$setCounter = 1;
// ...
$setCounter++;
这同样适用于$dataCounter
编辑
如果你正在使用一个类,那么你的
应该将
var $dataCounter = 0; var $setCounter = 1;
移到您的方法之外。将
$this->$setCounter++;
更改为$this->setCounter++;
$foo->$bar
是一个可变变量。您不是在处理foo
对象的bar
成员,而是在处理存储在单独的$bar
变量中的任何值,该变量用于查找`$foo的成员。例如
# Set up object
$foo = new stdClass;
$foo->bar = 'bar';
$foo->foo = 'foo';
# Try to write to something in the object
$x = 'bar';
$foo->$x = 'hello'; // note the $ on x
$foo->x = 'there'; // note the lack of $
var_dump($foo);
object(stdClass)#1 (3) {
["bar"]=>
string(5) "hello" // because of $foo->$x
["foo"]=>
string(3) "foo"
["x"]=>
string(5) "there" // because of $foo->x
}
不需要像现在这样在PHP中使用关键字"var"。
我认为你需要回顾基本情况。查看以下链接以了解更多详细信息:http://www.php.net/manual/en/language.variables.basics.php
此外,您不需要->。仅当左侧部分是对象实例时才使用此选项。您可以使用它来访问实例成员或静态成员(但是,我建议::用于静态成员)。查看以下链接以了解更多详细信息:参考-这个符号在PHP中是什么意思?
就代码而言,删除"箭头"answers"变量"。您正在回显0,因为您已将"var$dataCounter"初始化为0。
$arrayOfData = array("Data1", "Data2", "Data3", "Data4", "Data5", "Data6", "Data7", "Data8", "Data9");
$dataCounter = 0;
$setCounter = 1;
foreach($arrayOfData as $row => $value){
$dataCounter++;
if($dataCounter == 3) {
$setCounter++;
$dataCounter = 0;
}
}
从那里开始,然后继续。此外,对于你正在做的事情,前臂是不必要的。相反:
$arrayOfData = array("Data1", "Data2", "Data3", "Data4", "Data5", "Data6", "Data7", "Data8", "Data9");
$setCounter = (sizeOf($arrayOfData))%3; //counts sets of 3