Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/12/2014, 11:48
santiagokian
 
Fecha de Ingreso: enero-2013
Mensajes: 5
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Problema para recorrer un array multidimensional y encontrar un valor

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.