为什么,如果我有这样的对象数组:
class testClass {
private $_x = 10;
public function setX($x) {
$this->_x = $x;
}
public function writeX() {
echo $this->_x . '<br />';
}
}
$t = array();
for ($i = 0; $i < 10; $i++) {
$t[] = new testClass();
}
print_r($t);
我可以像foreach一样迭代:
foreach ($t as $tt) {
$tt->y = 7;
$tt->setX($counter);
$counter+=100;
}
print_r($t);
或者这个:
foreach ($t as &$tt) {
$tt->y = 7;
$tt->setX($counter);
$counter+=100;
}
print_r($t);
结果会一样吗?但是如果我在数组中有标量值,它们只能通过引用修改为($ arr as&amp; $ v),$ v?
答案 0 :(得分:3)
这取决于您使用的是PHP5还是早期版本。
在PHP5中,同样的事情因为它是一个对象数组。 (对其他类型来说不一样。)
在PHP4中,不是一回事。 (但话说回来,第二个人会抱怨语法。)