Справочные объекты PHP в петле цикла

Допустим, у меня есть эти классы:

class Foo { public $_data; public function addObject($obj) { $this->_data['objects'][] = $obj; } } class Bar { public $_data; public function __construct() { $this->_data['value'] = 42; } public function setValue($value) { $this->_data['value'] = $value; } } $foo = new Foo(); $bar = new Bar(); $foo->addObject($bar); foreach($foo->_data['objects'] as $object) { $object->setValue(1); } echo $foo->_data['objects'][0]->_data['value']; //42 

Мой фактический код этот, очень похожий, использует ArrayAccess:

 foreach($this->_data['columns'] as &$column) { $filters = &$column->getFilters(); foreach($filters as &$filter) { $filter->filterCollection($this->_data['collection']); } } 

filterCollection изменяет значение в $ filter, но когда вы смотрите на этот объект $, это значение неверно.

Related of "Справочные объекты PHP в петле цикла"

 foreach($foo->_data['objects'] as &$object) { $object->setValue(1); } 

Обратите внимание на &

Foreach работает с копией массива. Используйте переменную & перед переменной объекта.

foreach ($ foo -> _ data ['objects'] as & $ object)