Foros del Web » Programando para Internet » PHP »

Recorrer un arbol solo con el id....

Estas en el tema de Recorrer un arbol solo con el id.... en el foro de PHP en Foros del Web. Estimados buenas tardes. tengo un problema que para mi se ha vuelto complicadisimo.... tengo un arbol....con esta caracteristica.... Código: $nodes = array( array( 'id'=>1, 'text'=>'Program ...
  #1 (permalink)  
Antiguo 15/02/2012, 14:51
 
Fecha de Ingreso: enero-2012
Mensajes: 55
Antigüedad: 12 años, 3 meses
Puntos: 1
Recorrer un arbol solo con el id....

Estimados buenas tardes.

tengo un problema que para mi se ha vuelto complicadisimo....

tengo un arbol....con esta caracteristica....

Código:
$nodes = array(
		array(
			'id'=>1,
			'text'=>'Program Files',
			'files'=>array(
				array(
                                        'id'=>5,
                                        'parent_id'=>1,
					'text'=>'File',
					'files'=>array(
                                            array(
                                                'id'=>10,          
                                                'text'=>'file1',
                                                'leaf'=>true
                                            )
                                        )
				),
				array(
                                        'id'=>6,
					'text'=>'Config',
					'leaf'=>true
				),
				array(
                                        'id'=>7,
					'text'=>'etc',
					'leaf'=>true
				)
			)
		),
		array(
			'id'=>2,
			'text'=>'Users',
			'leaf'=>true
		),
		array(
			'id'=>3,
			'text'=>'workspace',
			'files'=>array(
				array(
                                         'id'=>8,
					'text'=>'Customers',
					'leaf'=>true
				),
				array(
                                        'id'=>9,
					'text'=>'Project',
					'leaf'=>true
				)
			)
		),
		array(
			'id'=>4,
			'text'=>'System',
			'leaf'=>true
		)
	);
recibo el id del array...
por ejemplo , $id = 9

necesito ser capaz de en otro array poder guardar esto

Código:
array(
                 'id'=>9,
		'text'=>'Project',
		'leaf'=>true
				)
para posteriormente mostrarlo....
en casi de obtener el id 10 , poder mostrar esto
Código:
 array(
                      'id'=>10,          
                      'text'=>'file1',
                      'leaf'=>true
                                            )
como lo puedo hacer??? alguien me ayuda porfavor

tengo entendido que hay formas de recorrer el arbol con in orden , post orden etc.... pero no se como ocuparlos......
abierto a todas las posibilidades, tutorial lo que tengan ya estoy desesperado !!.

si hay que agregar campos y demases todo sirve , pero tengo q lograr eso....

porfavor AYUDAAAAAAAAAAAAA

gracias
  #2 (permalink)  
Antiguo 15/02/2012, 14:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Recorrer un arbol solo con el id....

Lo que necesitas es crear una función recursiva que itere el arreglo, si ve nodos debajo vuelves a iterar y así hasta obtener el ID que buscas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/02/2012, 15:05
 
Fecha de Ingreso: enero-2012
Mensajes: 55
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Recorrer un arbol solo con el id....

exactamente.... donde no encuentro ni una funcion asi... encuentro ideas... pero no funciones hechas.... he intentado hacer algunas pero me pierdo D: .....

ayudaaaaaaaaaa
  #4 (permalink)  
Antiguo 15/02/2012, 15:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Recorrer un arbol solo con el id....

Lo que pasa es que no hay funciones ya hechas para todo, en tu caso necesitas desarrollar la función a medida de tu problema.

Si tienes algo ya hecho y que no funciona por favor muestralo, así sirve que te podemos ayudar mejor, no esperes a que alguien te de hecha la función.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 16/02/2012, 06:07
 
Fecha de Ingreso: enero-2012
Mensajes: 55
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Recorrer un arbol solo con el id....

ok... srry , no habia visto el post por que cuando me escribiste... era mi hora de salida del trabajo jeje... al ratito posteo lo que tengo
  #6 (permalink)  
Antiguo 16/02/2012, 09:47
 
Fecha de Ingreso: enero-2012
Mensajes: 55
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Recorrer un arbol solo con el id....

estimados...

despues de un largo analisis... pude recorrer el array con una funcion recursiva....
pero tengo problemas ahora para recuperar lo que deseo recuperar...

la funcion es la siguiente
Código:
echo '<pre>';
$hola=recorro($nodes);
echo '<pre>';
function recorro($nodes){
 
	foreach($nodes as $key=>$value){
 
		if (is_array($value)){  
                    
                        //si es un array sigo recorriendo
			echo 'key:'. $key;
			echo '<br>';
			recorro($value);
		}else{  
		       //si es un elemento lo muestro
                    
			echo $key.': '.$value ;
                         echo $value;
                         
			echo '<br>';
		}
 
	}
 
}
pero ahora como logro.... mostrar solo aquellos que tengan el parent_id igual al id.... <.< estoy fundiendome :O :(
alguien me ayuda?
  #7 (permalink)  
Antiguo 16/02/2012, 10:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Recorrer un arbol solo con el id....

Con un simple if lo puedes hacer, solamente comparas:
Código PHP:
Ver original
  1. function obtenId($idBuscar) {
  2.        foreach() {
  3.               if ($id == $idBuscar) {
  4.                       return $array;
  5.               }
  6.        }
  7.  
  8.        return false;
  9. }

Saludos.
  #8 (permalink)  
Antiguo 16/02/2012, 14:26
 
Fecha de Ingreso: enero-2012
Mensajes: 55
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Recorrer un arbol solo con el id....

Cita:
Iniciado por GatorV Ver Mensaje
Con un simple if lo puedes hacer, solamente comparas:
Código PHP:
Ver original
  1. function obtenId($idBuscar) {
  2.        foreach() {
  3.               if ($id == $idBuscar) {
  4.                       return $array;
  5.               }
  6.        }
  7.  
  8.        return false;
  9. }

Saludos.
si se que es con un if...
pero el if.... me ta complicando el tema...
tengo esto

Código:
function recorro($nodes,$id,$prueba,$i){
 
	foreach($nodes as $key=>$value){
            
             if (is_array($value)){  
                    
                        //si es un array sigo recorriendo
		 if($nodes['id']==$value['parent_id']&&$nodes['id']==$id){
               $prueba=array();
               $prueba[$i+1]=$value;
                                                            }
			recorro($value,$id,$prueba,$i);
		}else{  
		       //si es un elemento lo muestro
                    if($nodes['id']==$value['parent_id']&&$nodes['id']==$id){
               $prueba=array();
               $prueba[$i+1]=$value;
                                                            
		}
          
        
	}
        
        
                                    } 
                                    }
ese codigo lo tengo en ambos ....
tanto en el if como en el else....
por que necesito guardar todos los datos que tengan el id... con el parent id iguales... e iguales con el id que mando....
pero por algo no me funciona... alguien cacha? alguna idea? saludos

Etiquetas: arboles
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:29.