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 .