PHP Foreach对象数组

时间:2011-05-20 12:54:23

标签: php loops foreach

为什么,如果我有这样的对象数组:

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?

1 个答案:

答案 0 :(得分:3)

这取决于您使用的是PHP5还是早期版本。

在PHP5中,同样的事情因为它是一个对象数组。 (对其他类型来说不一样。)

在PHP4中,不是一回事。 (但话说回来,第二个人会抱怨语法。)