Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/12/2014, 14:46
santiagokian
 
Fecha de Ingreso: enero-2013
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Problema para recorrer un array multidimensional y encontrar un valor

Hola. Soy nuevo en el foro, y creo que me van a poder ayudar. Mi problema es mas bien teorico / practico, ya que no entiendo que es lo esta fallando. Tengo un metodo de mi clase Test que se encarga de recibir, en este caso, un array multidimensional de longitud indefinida y su funcion es encontrar valores dentro de dicho array.

Lo que querria lograr es que pasando los argumentos $array y $key me devuelva el $value de dicho $key, independientemente de que el valor devuelto sea un Array o un string.

Les paso el codigo para ver si alguien puede señalarme el error. Desde ya, muchisimas gracias. Saludos para todos.

Código PHP:
$array['database']['db_host'] = '127.0.0.1';
$array['database']['db_user'] = 'root';
$array['database']['db_pass'] = ''    ;
$array['fonts'] = 'arial, helvetica, sans-serif';
$array['colors']['red'] = '#ff0000';
$array['colors']['blue'] = '#0000ff';
$array['colors']['greens']['green']['cosas_verdes'] = array('manzanas verdes','peras?');
$array['colors']['greens']['lime'] = '#00ff00';
$array['colors']['greens']['teal'] = '#008080';

class 
test
{
    
    function 
buscar2($matriz$busqueda)
    { 
        foreach(
$matriz as $key=>$value)
        {     
            if (
is_array($value))
            {  
                if(!
is_numeric($key) && $key === $busqueda)
                { 
                    return 
$matriz[$key]; 
                } 

                
$this->buscar2($value,$busqueda);
            }
            else
            {  
                if(!
is_numeric($key) && $key == $busqueda)
                { 
                    
//echo "$value";
                    
return $value;
                }
            }     
        }    
    }
}
echo 
"<pre>";
$c = new test();
var_dump($c->buscar2($array,'db_host'));    //da NULL . Si en la funcion comento el return y hago echo imprime el valor. Sino no
var_dump($c->buscar2($array,'database'));     //devuelve el array    
var_dump($c->buscar2($array,'colors'));     //devuelve el array
var_dump($c->buscar2($array,'red'));     //da NULL .
var_dump($c->buscar2($array,'cosas_verdes'));     //da NULL . 
var_dump($c->buscar2($array,'greens')); //da NULL . 

Última edición por santiagokian; 18/12/2014 a las 14:55