使用php函数返回元素

时间:2013-10-13 10:52:12

标签: php arrays function variables pointers

我有一个这样的课程:

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;

相反,在运行我的代码时,active的{​​{1}}属性仍然是假的,因为它在调用getElementByName之前是

我认为该函数对元素进行了“复制”,如何获取数组的真实元素,以便当我修改它,然后在数组中访问它时,它的值已经改变了?

2 个答案:

答案 0 :(得分:3)

Return a reference(注意& ):

function &getElementByName($name) { ... }

答案 1 :(得分:1)

返回对元素的引用:

function &getElementByName($name) { // & returns by reference
    foreach($this->elements as $elm) {
        if ($elm->name == $name) {
            return $elm;
        }
    }
}

默认情况下,从PHP 5对象开始是passed by reference