Foreach 循环中的 PHP 引用对象 [英] PHP Reference Objects in Foreach Loop

查看:58
本文介绍了Foreach 循环中的 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:

My actual code is this, very similar, uses ArrayAccess:

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

filterCollection 改变了 $filter 中的一个值,但是当你查看 $this 对象时,这个值是不对的.

filterCollection changes a value in $filter, but when you look at the $this object, the value is not right.

推荐答案

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

注意 &

这篇关于Foreach 循环中的 PHP 引用对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆