Función que acepta una referencia a una matriz, busca la matriz y devuelve una referencia al resultado de la búsqueda?
-
29-10-2019 - |
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.
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.