Foros del Web » Programando para Internet » PHP »

Problema con recursividad (Solucionado)

Estas en el tema de Problema con recursividad (Solucionado) en el foro de PHP en Foros del Web. [SOLUCIONADO: me faltaba el return en el Busca... ] Hola, tengo el siguiente script (en realidad es una prueba, simplifico las cosas para comprobar qué ...
  #1 (permalink)  
Antiguo 07/09/2005, 04:52
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1
Antigüedad: 18 años, 6 meses
Puntos: 0
Pregunta Problema con recursividad (Solucionado)

[SOLUCIONADO: me faltaba el return en el Busca... ]


Hola, tengo el siguiente script (en realidad es una prueba, simplifico las cosas para comprobar qué falla) y me gustaría saber qué estoy haciendo mal:

Código PHP:
<?php
$_array
=array('valor_1','valor_2',array('valor_1_1',array('valor_1_1_1','valor_1_1_2'),'valor_1_2'),'valor_3');

$_referencia=& Busca($_array,false);

print_r($_referencia);

/* Si b = true, devuelve la referencia al array */
function &Busca(&$a,$b)
{
   if(!
$b) {
    foreach(
$a as $primer_nivel)
       if(
is_array($primer_nivel))
            foreach(
$primer_nivel as $segundo_nivel)
              if(
is_array($segundo_nivel))
                  
Busca($segundo_nivel,true);
   } else return 
$a;
}

?>
Al ejecutar eso no se muestra nada, sin embargo modificando la función cambiando "Busca($segundo_nivel,true);" por "return $segundo_nivel;" funciona perfectamente, al igual que también se muestra el contenido de la variable si introduzco un "print_r($a);" en la función, justo antes de "return $a;"; pero claro, como ya he dicho son sólo pruebas y no me sirven en el script real.

Probablemente existan muchas otras formas de lograr lo que deseo hacer, pero me gustaría saber cuál es error.

Muchas gracias y un saludo, que me estoy poniendo espeso ya...



Nota: PHP Version 5.0.4

Última edición por Cornelius; 07/09/2005 a las 05:32
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:08.