我有简单的代码:
class A {
public $var = 1;
function inc() {$this->var++;}
}
function foo($a) {
for($i = 0; $i < 10; $i++) {
$a->inc();
}
}
$a = new A();
foo($a);
$v = $a->var;
echo "var value is $v \n";
我希望打印的值为1但是我得到11。 PHP不应该通过copy-constructor将参数传递给函数吗?
答案 0 :(得分:0)
您已经拥有$var=1
并且每10次递增一次。这意味着你的for循环运行了10次,并且随着$this->var++
中class A inc method
的增加而增加。因此,要获得结果,$var
应该等于-9,否则您应该将for循环设置为单次运行,并将$var
的值默认设置为0.