接受对数组的引用,搜索数组并返回对搜索结果的引用的函数?

时间:2012-01-17 11:58:21

标签: php recursion pass-by-reference return-by-reference

我需要一个函数/类方法,它在数组中找到一个元素(在另一个包含所述元素位置的数组的帮助下)并返回对它的引用。

无济于事我试过这样做:

$var = array("foo" => array("bar" => array("bla" => "goal")));

$location = array("foo", "bar", "bla");

...

$ref =& $this->locate($var, $location);

...

private function &locate(&$var, $location) {

    if(count($location))

        $this->locate($var[array_shift($location)], $location);

    else

        return $var;

}

上面的函数成功找到'目标',但引用不会返回$ ref,而是$ ref为空。

非常感谢任何帮助,这严重阻碍了我完成工作。谢谢。

1 个答案:

答案 0 :(得分:0)

您需要将结果传递到第一次调用的递归堆栈中:

private function &locate(&$var, $location) {
    if(count($location)) {
        $refIndex= array_shift($location);
        return $this->locate($var[$refIndex], $location);
    } else {
        return $var;
    }
}

我会在递归调用之前执行array_shift调用。你知道,我对函数调用感到不安,其中参数在调用中发生变化。