Fonction qui accepte une référence à un tableau, recherche le tableau et renvoie une référence au résultat de la recherche?

StackOverflow https://stackoverflow.com/questions/8894219

Question

J'ai besoin d'une fonction / méthode de classe qui trouve un élément dans un tableau (à l'aide d'un autre tableau contenant l'emplacement dudit élément) et lui renvoie une référence.

En vain, j'ai essayé de le faire comme ça:

$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;

}

La fonction ci-dessus trouve avec succès le «but» mais la référence n'est pas retournée à $ ref, mais $ ref est vide.

Toute aide est grandement appréciée, cela m'empêche sérieusement de terminer mon travail. Merci.

Était-ce utile?

La solution

Vous devez passer le résultat dans la pile de récursivité au premier appel:

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

Et je ferais l'appel Array_shift avant l'appel récursif. Vous savez, je suis inquiet avec les appels de fonction où les paramètres changent dans l'invocation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top