Llevo varios dias peleandome con esta función , que en si hace lo que necesito , pero no entiendo una cosa, espero puedan ayudarme porque me está dando duros dolores de cabeza no entender algo que en sí creo que debe ser muy sencillo.
Código PHP :
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');
La salida por pantalla es :
home
usuario1
download
videos
holaholaholausuario2
mp3
holaholausuario3
holaholahola
No entiendo 2 cosas :
Por qué se imprime 'hola' en pantalla, cuando tras el echo, no se vuelve a invocar a la función.
La variable $id toma el valor 6, al imprimir 'videos' , y cuando se imprimen los echo , cambia su valor y no entiendo por qué, puesto que como digo, ni se invoca la función y tampoco le asigno valor nuevo a la variable $id...
Espero puedan ayudarme realmente porque de verdad que en un código tan sencillo a simple vista , no me entra en cabeza esas 2 cosas y logro ver el por qué.
Un saludo y gracias