Foros del Web » Programando para Internet » PHP »

alguna idea para hacer esta lógica recursiva

Estas en el tema de alguna idea para hacer esta lógica recursiva en el foro de PHP en Foros del Web. Código: foreach($elementsData as $k=>$v){ // nivel 1 echo '<li id="'.$v['Category']['id'].'"> '.$v['Category']['name']; if($v['children']){ // nivel 2 echo '<ul>'; foreach($v['children'] as $k2 => $v2){ //echo '<li id="'.$v2['Category']['id'].'"> ...
  #1 (permalink)  
Antiguo 30/03/2012, 09:19
Avatar de romel_inc  
Fecha de Ingreso: diciembre-2007
Ubicación: Venezuela-monagas
Mensajes: 288
Antigüedad: 12 años
Puntos: 14
alguna idea para hacer esta lógica recursiva

Código:
foreach($elementsData as $k=>$v){		
		// nivel 1
		echo '<li id="'.$v['Category']['id'].'"> '.$v['Category']['name'];	
		if($v['children']){
			// nivel 2
			echo '<ul>';
				foreach($v['children'] as $k2 => $v2){
					//echo '<li id="'.$v2['Category']['id'].'"> '.$v2['Category']['name'];
					//if($v2['children']){ ... }
				}
			echo '</ul>';				
			echo '</li>';	
		}else{
			echo '</li>';
		}	
}

Quiero mostrar un árbol anidado.

PD: se trabajar con funciones, cakephp, prototype, pero esta función recursiva no la veo.

Aquí tengo el codigo para recorre un árbol de 5 niveles


Código:
// solo del 1 al 5 nivel del arbol.
if($elementsData){
	
echo  '<ul id="mytree-standard">';	
	foreach($elementsData as $k=>$v){		
		// nivel 1
		echo '<li id="'.$v['Category']['id'].'"> '.$v['Category']['name'];	
		if($v['children']){
			// nivel 2
			echo '<ul>';
				foreach($v['children'] as $k2 => $v2){
						echo '<li id="'.$v2['Category']['id'].'"> '.$v2['Category']['name'];
						// nivel 3
						if($v2['children']){
								echo '<ul>';
									foreach($v2['children'] as $k3 => $v3){
										echo '<li id="'.$v3['Category']['id'].'"> '.$v3['Category']['name'];
										// nivel 4
										if($v3['children']){
											echo '<ul>';
												foreach($v3['children'] as $k4 => $v4){
													echo '<li id="'.$v4['Category']['id'].'"> '.$v4['Category']['name'];
													// nivel 5
													if($v4['children']){
														echo '<ul>';
														foreach($v4['children'] as $k5 => $v5){
										
															echo '<li id="'.$v5['Category']['id'].'"> '.$v5['Category']['name'].'</li>';
														
														}														
														echo '</ul>';				
														echo '</li>';
													}else{
														echo '</li>';														
													}						
												}
											echo '</ul>';				
											echo '</li>';			
										}else{
											echo '</li>';						
										}
									}
								echo '</ul>';				
								echo '</li>';
						}else{
							echo '</li>';	
						
						}				
				}
			echo '</ul>';				
			echo '</li>';				
		}else{
			echo '</li>';
		}			
	}

echo '</ul>';

}


?>

saludos.
__________________
Lo que se usar (JAVA, Spring MVC, IntelliJ IDEA , GAE, CakePHP, Bootstrap, Underscorejs, jQuery, HTML5, CSS3, JSON, Ajax, Prototype), Aprendiendo a usar Angularjs y Git.
  #2 (permalink)  
Antiguo 30/03/2012, 09:24
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 11 años, 4 meses
Puntos: 1532
Respuesta: alguna idea para hacer esta lógica recursiva

crea una función y llámala a sí misma dentro de ella, no es tan complicado:http://devzone.zend.com/283/recursio...rnessed-power/
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 30/03/2012, 09:34
Avatar de romel_inc  
Fecha de Ingreso: diciembre-2007
Ubicación: Venezuela-monagas
Mensajes: 288
Antigüedad: 12 años
Puntos: 14
Respuesta: alguna idea para hacer esta lógica recursiva

gracias alvarez por la guía. al terminar te cuento. saludos.
__________________
Lo que se usar (JAVA, Spring MVC, IntelliJ IDEA , GAE, CakePHP, Bootstrap, Underscorejs, jQuery, HTML5, CSS3, JSON, Ajax, Prototype), Aprendiendo a usar Angularjs y Git.
  #4 (permalink)  
Antiguo 30/03/2012, 11:03
Avatar de romel_inc  
Fecha de Ingreso: diciembre-2007
Ubicación: Venezuela-monagas
Mensajes: 288
Antigüedad: 12 años
Puntos: 14
Respuesta: alguna idea para hacer esta lógica recursiva

Ya lo conseguí, gracias estimado por su ayuda. saludos.

Código:
function tree($elementsData){
	
	foreach($elementsData as $k=>$v){		
		// nivel 1
		echo '<li id="'.$v['Category']['id'].'"> '.$v['Category']['name'];	
		if($v['children']){
			// nivel 2
			echo '<ul>';
				tree($v['children']);
			echo '</ul>';				
			echo '</li>';	
		}else{
			echo '</li>';
		}	
	}
		
} 


echo  '<ul id="mytree-standard">';
tree($elementsData);
echo '</ul>';
__________________
Lo que se usar (JAVA, Spring MVC, IntelliJ IDEA , GAE, CakePHP, Bootstrap, Underscorejs, jQuery, HTML5, CSS3, JSON, Ajax, Prototype), Aprendiendo a usar Angularjs y Git.

Etiquetas: alguna, idea, recursiva
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:19.