PHP Foreach на массив объектов - PullRequest
1 голос
/ 20 мая 2011

Почему, если у меня есть массив таких объектов:

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 & $ v), $ v только ссылкой?

1 Ответ

3 голосов
/ 20 мая 2011

Это зависит от того, используете ли вы PHP5 или более раннюю версию.

В PHP5 то же самое , потому что это массив объектов . (Не то же самое для других типов.)

В PHP4 не то же самое. (Но опять же, второй все равно будет жаловаться на синтаксис.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...