Foros del Web » Programando para Internet » PHP »

como guardar resultado de una funcion recursiva en un arreglo json?

Estas en el tema de como guardar resultado de una funcion recursiva en un arreglo json? en el foro de PHP en Foros del Web. hola chic@s Tengo la siguiente funcion que adapte de una que encontre por aqui en los aportes me parece: Código PHP: $result  = array(); function  crearArbol ...
  #1 (permalink)  
Antiguo 13/01/2014, 20:04
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años
Puntos: 23
como guardar resultado de una funcion recursiva en un arreglo json?

hola chic@s

Tengo la siguiente funcion que adapte de una que encontre por aqui en los aportes me parece:

Código PHP:
$result = array();
function 
crearArbol($field,$id){
    
$sql "SELECT * FROM table WHERE ".$field."=".$id;
     
$rs mysql_query($sql);
    if(
$rs){
        while(
$arr mysql_fetch_array($rs)){
              
$node = array();
              
//echo($prefix.$arr['text'].'<br>');
             
echo $node['id'] = $arr['id']." ";
            echo 
$node['text'] = $arr['text']." ";
            echo 
$node['id_padre'] = $arr['id_padre']." ";
            echo 
"<br />";
            
/* imprimir arbol "hijos" de este elemento*/
            
crearArbol('id_padre',$arr['id']);
        }
    }

crearArbol('id',46); 
eso me imprime un resultado asi:

Código:
46  frutas 
200 manzana 46
201 pera 46
202 melon
... etc
Yo necesito un array json asi:

Código:
[
{id:46, text: 'frutas', id_padre: null},
{id:200, text: 'manzana', id_padre:46},
{id:201, text: 'pera', id_padre:46},
{id:202, text: 'melon', id_padre:46}
{etc.}
]
como puedo implementarle a esa funcion un :

Código PHP:
$result = array();
array_push($result,$node);
echo 
json_encode($result); 
  #2 (permalink)  
Antiguo 13/01/2014, 21:48
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: como guardar resultado de una funcion recursiva en un arreglo json?

Debes crear el array con la misma estructura que requieres en el json:

Código PHP:
Ver original
  1. // Es mala práctica, pero después de definir la función agrega esto:
  2.          global $result;
  3.  
  4.          // Esto va dentro del while
  5.          // Agregas el elemento
  6.          $result[] = array(
  7.                'id' => $arr['id'],
  8.                'text' => $arr['text'],
  9.                'id_padre' => $arr['id_padre']
  10.          );
  11.  
  12.          // Si $arr tiene la estructura que requieres bastará con:
  13.          $result[] = $arr;
  14.  
  15.          // Aquí va la llamada recurrente
  16.  
  17. // ********** esto va fuera de la función
  18.  
  19. // Como estamos haciendo uso de global $result,
  20. // hay que inicializar antes de ejecutar la función
  21. $result = array();
  22.  
  23. // Ejecutas a la función:
  24. crearArbol('id',46);
  25.  
  26. // Todo estará en $result
  27. echo json_encode($result);
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 14/01/2014, 08:48
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años
Puntos: 23
Respuesta: como guardar resultado de una funcion recursiva en un arreglo json?

hola triby gracias!!

ya lo probe y funciona ok

parece que el truco estaba en global $result;


Etiquetas: arreglo, funcion, mysql, recursiva, resultado, select, sql
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 17:19.