質問

私は、配列内の要素を見つけ(上記の要素の位置を含む別の配列の助けを借りて)関数/ class-methodが必要です。

空にしていないのは、そのようにそれをやろうとしました:

$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