Programación php
Email: Password:


¡Regístrate gratis! | ¿Has perdido tu password?

Home
Blog

En él que podrás informarte de todas las noticias relacionadas con el posicionamiento de páginas web.

Ir al Blog de posicionamiento web



Foro de programación en PHP

Responder el mensaje

Función recursiva

Autor: shilen79
Publicado: 01-10-2011 01:24 PM
Buenas , llevo un par de días dándome de coscorrones con este código que a pesar de ser sencillo y realizar lo que quiero , no entiendo porque lo realiza.

function recur($dir,$id) {

for ($x=0;$x<count($dir);$x++) {
if ($dir[$x][1] == $id) {
echo $dir[$x][2]."<BR>";
recur($dir,$dir[$x][0]);
}
}
echo 'hola';
}
$data[] = array(1,0, 'home');
$data[] = array(2,1, 'usuario1');
$data[] = array(3,1, 'usuario2');
$data[] = array(4,1, 'usuario3');
$data[] = array(5,2, 'download');
$data[] = array(6,5, 'videos');
$data[] = array(7,3, 'mp3');

recur($data,0);


La salida es :
home
usuario1
download
videos
holaholaholausuario2
mp3
holaholausuario3
holaholahola

Lo que no entiendo es porque se imprimen los 'hola' , si despues del echo no hay nada, y no se vuelve a llamar a la función.
Porque segun esto si la llama(cosa que tampoco entiendo) y me modifica la variable $id que muy bien porque hace lo que quiero, pero no lo entiendo :(
Autor: lol32
Publicado: 06-10-2011 01:39 PM
Aprende a usar ese tipo de array/estructuras.
Autor: verxer
Publicado: 08-1-2012 07:38 AM
Espero que no tengas tu código tal cual esta puesto aqui en el foro, y lo tengas tabulado ,así se ve claramente lo que esta pasando:

function recur($dir,$id) {
for ($x=0;$x<count($dir);$x++) {
if ($dir[$x][1] == $id) {
echo $dir[$x][2]."<BR>";
recur($dir,$dir[$x][0]);
}
}
echo 'hola';
}


Dentro de la función, estas llamando a la misma función, cada vez que if ($dir[$x][1] == $id) vuelve a hacer el for, y despues del for el echo 'hola';
Autor: verxer
Publicado: 08-1-2012 07:40 AM
sorry por el comentario de las tabulaciones, despues de escribir el comentario me di cuenta que el foro no permite tabulaciones