配列への参照を受け入れ、配列を検索し、検索結果への参照を返しますか?
-
29-10-2019 - |
質問
私は、配列内の要素を見つけ(上記の要素の位置を含む別の配列の助けを借りて)関数/ 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呼び出しを行います。あなたは知っている、私は、パラメータが呼び出し内で変化する関数呼び出しに不安です。
所属していません StackOverflow