2010-10-05 6 views
0

Je rencontre des difficultés pour créer un tableau en PHP qui sera affiché au format JSON que je recherche. Je vais vous montrer ce que je suis en train de réaliser et où j'ai à ce jour:Aide pour essayer de générer un format de tableau multidimensionnel difficile

[ 
    {"data":[{"x":3,"y":0},{"x":10,"y":0}]}, 
    {"data":[{"x":11,"y":0},{"x":13,"y":0}]}, 
    {"data":[{"x":12,"y":1},{"x":17,"y":1}]} 
] 

Je Boucler dans les résultats db et essayer de construire des tableaux de sortie JSON ci-dessus, mon php ressemble à ceci (qui est évidemment pas encore droit):

//build the data 
        $data = array(
           array(
            'x' => $age_start, 
            'y' => $ill_type 
           ), 
           array(
            'x' => $age_end, 
            'y' => $ill_type 
           ) 
          ); 

        $illnesses[] = $data; 

ce code affiche le JSON suivant:

[ 
    { 
    [ 
     [{"x":2,"y":6},{"x":2,"y":6}], 
     [{"x":2,"y":6},{"x":5,"y":6}], 
     [{"x":4,"y":6},{"x":4,"y":6}] 
    ] 
    } 
] 

les pointeurs sur ce serait génial!

+0

est-il différent de votre [question précédente] (http://stackoverflow.com/questions/3854138/help-using-json-encode-to-produce- format spécifique)? – Gordon

+0

légèrement - essayant de construire la structure de tableau correctement dans une boucle, ITroubs a corrigé le problème dans mon code – spinozf

Répondre

1

Fondamentalement, si vous connaissez votre JSON déjà désiré, vous pouvez simplement json_decode pour obtenir sa représentation en PHP. La fonction var_export imprime la structure au format analysable. Vous pouvez également utiliser print_r ou var_dump pour vider la structure.

$json = <<< JSON 
[ 
    {"data":[{"x":3,"y":0},{"x":10,"y":0}]}, 
    {"data":[{"x":11,"y":0},{"x":13,"y":0}]}, 
    {"data":[{"x":12,"y":1},{"x":17,"y":1}]} 
] 
JSON; 

var_export(json_decode($json)); 

L'approche ci-dessus est universelle. Il suffit de décoder et de vider la structure. Puis assembler votre code pour créer cette structure et encoder.

+0

Wooosh. Je suis tout à fait au-dessus de ma tête = ( –

+0

je suis d'accord avec russell – ITroubs

+1

Oui - le 'json_decode' va générer la structure PHP correcte :) J'aime – gnud

1

faire ceci:

$data['data'] = array(
     array(
       'x' => $age_start, 
       'y' => $ill_type 
     ), 
     array(
       'x' => $age_end, 
       'y' => $ill_type 
     ) 
); 
1

regardant la chaîne JSON, vous pouvez voir que:

  • il est un tableau (il est entouré par [ et ])
  • chaque élément est un objet (entouré de { et })
  • les objets ont un élément data qui est lui-même un réseau
  • cette matrice se compose de deux objets avec un x et un y propriété

Il est important de savoir qu'un objet JSON est représenté en PHP par un tableau associatif (quand json_encode() « ing, json_decode() a un paramètre spécifique à utiliser un stdClass ou un assoc. tableau).
Ainsi la structure php ressemble à ceci:

$data = array(
    array('data' => array(array('x' => 3, 'y' => 0), array('x' => 10, 'y' => 0)) 
    ,array('data' => array(array('x' => 11, 'y' => 0), array('x' => 13, 'y' => 0)) 
    ,array('data' => array(array('x' => 12, 'y' => 1), array('x' => 17, 'y' => 1)) 
); 
+0

Les objets JSON sont seulement représentés comme des tableaux associatifs si vous mettez le second argument à 'json_decode' sur TRUE. Sinon, ce sont des objets StdClass. Ce que vous voulez dire, c'est que les tableaux associatifs en PHP sont encodés en objets JSON. En dehors de ce minuscule nitpick, +1. – Gordon

+1

@Gordon: Vous avez absolument raison, j'ai mis à jour ma réponse. –