Estimado : muchisimas gracias por su respuesta. Modifique la funcion (copio debajo) pero estoy cometiendo algun tipo de error que impide que la misma funcione como quisiera ( que al encontrar el needle en el bucle foreach me devuelva su value, independientemente de que sea un array o string el mismo). Codigo :
Código PHP:
<?php
$array= array(array(41,186,384),321,93,array(254,325,array(195,402)),299);
$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';
function recursive_array_search_dos($needle,$haystack )
{
foreach($haystack as $key=>$value)
{
if ((is_array($value) || is_string($value)) && ($key === $needle)) var_dump($value);
//if ((is_array($value) || is_string($value)) && ($key === $needle)) return $value;
else {
if(is_array($value)) recursive_array_search_dos($needle,$value);
}
}
}
echo"<pre>";
(recursive_array_search_dos('database',$array));
(recursive_array_search_dos('db_host',$array));
(recursive_array_search_dos('db_user',$array));
(recursive_array_search_dos('fonts',$array));
(recursive_array_search_dos('blue',$array));
(recursive_array_search_dos('greens',$array));
var_dump(recursive_array_search_dos('database',$array));
var_dump(recursive_array_search_dos('db_host',$array));
var_dump(recursive_array_search_dos('db_user',$array));
var_dump(recursive_array_search_dos('fonts',$array));
var_dump(recursive_array_search_dos('blue',$array));
var_dump(recursive_array_search_dos('greens',$array));
Si descomento la linea que esta comentada y ejecuto, lo que noto es que la funcion esta encontrando el key == needle y lo imprime. Pero a esa si le pongo un return $value ( linea siguiente ) me devuelve un valor NULL. Estaria sumamente agradecido si puede ayudarme a dilucidar que es lo que no se o estoy haciendo mal. saludos y gracias.