Ver Mensaje Individual
  #4 (permalink)  
Antiguo 27/05/2012, 23:04
Avatar de rigobcastro
rigobcastro
 
Fecha de Ingreso: febrero-2012
Ubicación: Lejanías
Mensajes: 69
Antigüedad: 12 años, 9 meses
Puntos: 21
Respuesta: Salir de funcion recursiva

Bueno, yo comprobaria primero el tipo de variable luego ejecuto el bucle, tambien si necesito recorrer un objeto, me aseguro de que asi sea.

Haria algo así pero pues como dice JairLizcano necesitas saber que valores son y claro, el resto de codigo para ver si se puede simplificar..

Código PHP:
Ver original
  1. function recorro($matriz, $directorioPadre) {
  2.  
  3.     // Comprobamos si es una matriz u objecto para ejecutar el bucle de recorrido, si no imprime
  4.     if (is_object($matriz) OR is_array($matriz)) {
  5.         // Aseguramos de que la matriz se convierta a objeto
  6.         $matriz = (object) $matriz;
  7.        
  8.         // Recorremos con la seguridad de que es un objecto lo que vamos a recorrer    
  9.         foreach ($matriz as $key => $value) {
  10.             $nombre = $value->getNombre();
  11.             if ($nombre == $directorioPadre) {
  12.                 $encontro = TRUE;
  13.                 $a['encontro'] = $encontro;
  14.                 $a['tipoElemento'] = $value->getTipoElemento();
  15.                 $a['key'] = $key;
  16.                 $a['arreglo'] = $value;
  17.                 $continuar = FALSE;
  18.                 return $a; //retorna el objeto
  19.             } else {
  20.                 $tipoObjeto = get_class($value);
  21.                 if ($tipoObjeto == 'Directorio') {
  22.                     //tiene subdirectorios
  23.                     $listaElementos = $value->getListaElementos();
  24.                     $numElementos = count($listaElementos);
  25.                     if ($numElementos > 0) {
  26.                         //si tiene elementos lo debe recorrer
  27.                         $this->recorro($listaElementos, $directorioPadre);
  28.                     }
  29.                 }
  30.             }
  31.         }
  32.     } else {
  33.         $a = 'key:' . $value;
  34.         echo $a;
  35.         echo '<br>';
  36.     }
  37. }

!Claro! es solo como yo lo haria en cuestion a estructura, desconocemos su funcionalidad.

Saludos...