Función que acepta una referencia a una matriz, busca la matriz y devuelve una referencia al resultado de la búsqueda?

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

Pregunta

Necesito un método de función / clase que encuentre un elemento en una matriz (con la ayuda de otra matriz que contiene la ubicación de dicho elemento) y devuelve una referencia a ella.

Sin éxito, he intentado hacerlo así:

$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 función anterior se encuentra con éxito el 'objetivo', pero la referencia no se devuelve a $ ref, en lugar de que $ ref está vacía.

Cualquier ayuda es muy apreciada, esto se está manteniendo seriamente para completar mi trabajo.Gracias.

¿Fue útil?

Solución

Debe pasar el resultado en la pila de recursiones a la primera llamada:

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

y yo haría la llamada Array_Shift antes de la llamada recursiva.Sabes, estoy incómodo con las llamadas de función donde los parámetros cambian dentro de la invocación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top