【发布时间】:2013-10-21 01:56:07
【问题描述】:
我有这样的课:
class Foo {
$elements = array();
function getElementByName($name) {
foreach($this->elements as $elm) {
if ($elm->name == $name) {
return $elm;
}
}
}
}
我希望以下代码可以修改我的数组的元素:
$myFoo = new Foo();
$myFoo->getElementByName('foo1')->active = true;
相反,当运行我的代码时,$elements['foo1'] 的 active 属性仍然是 false,因为它是在调用 getElementByName 之前
我认为该函数对元素进行了“复制”,我怎样才能得到数组的真实元素,这样当我修改它,然后在数组中访问它时,它的值已经改变了?
【问题讨论】:
-
我无法重现该行为:codepad.org/7RFtib1d
-
你猜对了。但请注意,PHP 从版本 5 开始无论如何都应该通过引用传递对象。你还在运行 PHP 4 吗?
-
@knittl PHP 4.4.9 将抛出
unexpected T_OBJECT_OPERATOR。
标签: php arrays function variables pointers