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

没有用我试图这样做:

$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为空。

任何帮助都非常感谢,这是严重的让我从完成工作。谢谢。

有帮助吗?

解决方案

您需要将结果传递到递归堆栈到第一个呼叫:

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

,我会在递归调用之前进行array_shift调用。你知道,我对函数调用感到不安,其中参数在调用范围内更改。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top