Funzione che accetta un riferimento a un array, cerca l'array e restituisce un riferimento al risultato della ricerca?

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

Domanda

Ho bisogno di una funzione / metodo di classe che trova un elemento in un array (con l'aiuto di un altro array contenente la posizione di detto elemento) e restituisce un riferimento ad esso.

senza successo Ho provato a farlo come:

$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 funzione sopra riportata con successo rileva l'obiettivo "ma il riferimento non viene restituito a $ ref, invece $ ref è vuota.

Qualsiasi aiuto è molto apprezzato, questo mi sta seriamente di completare il mio lavoro.Grazie.

È stato utile?

Soluzione

È necessario passare il risultato nel risultato nello stack di ricorsione alla prima chiamata:

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

E farei la chiamata array_shift prima della chiamata ricorsiva.Sai, sto a disagio con le chiamate di funzione in cui i parametri cambiano all'interno dell'invocazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top