IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Json_encode bizarre ! [Encodage]


Sujet :

Langage PHP

  1. #1
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut Json_encode bizarre !
    Bonjour,

    Voici le code qui génère un tableau à partir du résultat d'une requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while($row = mysql_fetch_array($result))
    {
    	$historique["lot_{$row['id_lot']}"][$i]['type_lot'] = $row['type_de_lot'];
    	$historique["lot_{$row['id_lot']}"][$i]['date'] = $row['heureFinJeu'];
    	$historique["lot_{$row['id_lot']}"][$i]['temps'] = $row['dureeQuizz'];
    	$historique["lot_{$row['id_lot']}"][$i]['mots'] = $row['nbCorrectes'];
    	$i++;
    }
    Voici un var_dump exemple du tableau $historique :
    array(2) { ["lot_1"]=> array(5) { [0]=> array(4) { ["type_lot"]=> string(6) "type_1" ["date"]=> string(19) "2011-09-15 09:49:45" ["temps"]=> string(5) "14958" ["mots"]=> string(2) "11" } [1]=> array(4) { ["type_lot"]=> string(6) "type_1" ["date"]=> string(19) "2011-09-15 09:49:20" ["temps"]=> string(5) "13125" ["mots"]=> string(2) "10" } [2]=> array(4) { ["type_lot"]=> string(6) "type_1" ["date"]=> string(19) "2011-09-15 09:48:50" ["temps"]=> string(5) "25400" ["mots"]=> string(2) "11" } [3]=> array(4) { ["type_lot"]=> string(6) "type_1" ["date"]=> string(19) "2011-09-15 09:45:45" ["temps"]=> string(5) "35842" ["mots"]=> string(2) "12" } [4]=> array(4) { ["type_lot"]=> string(6) "type_1" ["date"]=> string(19) "2011-09-15 09:44:34" ["temps"]=> string(5) "34270" ["mots"]=> string(2) "12" } } ["lot_9"]=> array(5) { [5]=> array(4) { ["type_lot"]=> string(6) "type_2" ["date"]=> string(19) "2011-09-28 11:36:53" ["temps"]=> string(5) "21769" ["mots"]=> string(2) "11" } [6]=> array(4) { ["type_lot"]=> string(6) "type_2" ["date"]=> string(19) "2011-09-26 00:31:34" ["temps"]=> string(5) "20182" ["mots"]=> string(2) "12" } [7]=> array(4) { ["type_lot"]=> string(6) "type_2" ["date"]=> string(19) "2011-09-26 00:31:07" ["temps"]=> string(5) "18880" ["mots"]=> string(2) "11" } [8]=> array(4) { ["type_lot"]=> string(6) "type_2" ["date"]=> string(19) "2011-09-26 00:30:42" ["temps"]=> string(5) "21414" ["mots"]=> string(2) "10" } [9]=> array(4) { ["type_lot"]=> string(6) "type_2" ["date"]=> string(19) "2011-09-26 00:30:15" ["temps"]=> string(5) "17972" ["mots"]=> string(2) "11" } } }
    => J'ai mis en évidence le fait que chaque lot présente des indices de 0 à 4 pour le lot_1 et de 5 à 9 pour le lot_9.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $jsonHisto = json_encode($historique);
    Voici maintenant le résultat du json_encode du tableau :
    string(876) "{"lot_1":[{"type_lot":"type_1","date":"2011-09-15 09:49:45","temps":"14958","mots":"11"},{"type_lot":"type_1","date":"2011-09-15 09:49:20","temps":"13125","mots":"10"},{"type_lot":"type_1","date":"2011-09-15 09:48:50","temps":"25400","mots":"11"},{"type_lot":"type_1","date":"2011-09-15 09:45:45","temps":"35842","mots":"12"},{"type_lot":"type_1","date":"2011-09-15 09:44:34","temps":"34270","mots":"12"}],"lot_9":{"5":{"type_lot":"type_2","date":"2011-09-28 11:36:53","temps":"21769","mots":"11"},"6":{"type_lot":"type_2","date":"2011-09-26 00:31:34","temps":"20182","mots":"12"},"7":{"type_lot":"type_2","date":"2011-09-26 00:31:07","temps":"18880","mots":"11"},"8":{"type_lot":"type_2","date":"2011-09-26 00:30:42","temps":"21414","mots":"10"},"9":{"type_lot":"type_2","date":"2011-09-26 00:30:15","temps":"17972","mots":"11"}}}"
    => Cette fois, seul le lot 9 a ses indices ! Toutes les valeurs concernant le lot_1 sont encadrées globalement de crochets !

    J'ai l'impression que ce phénomène est la cause de problèmes que je rencontre dans l'utilisation du json en Javascript.

    Bug dans la fonction json_encode ou j'ai oublié un truc ?

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Le premier élément du lot 9 commence avec l'indice "5".

    Le premier lot, lui, commence avec l'indice "0".

    Du coup, il n'est pas nécessaire de préciser le 0 parce que c'est l'indice par défaut du premier élément d'un tableau.


    C'est quoi ton problème en javascript ?

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Seb33300 Voir le message
    Le premier élément du lot 9 commence avec l'indice "5".

    Le premier lot, lui, commence avec l'indice "0".

    Du coup, il n'est pas nécessaire de préciser le 0 parce que c'est l'indice par défaut du premier élément d'un tableau.


    C'est quoi ton problème en javascript ?
    Finalement non, mon problème Javascript était tout simplement dû à un bug de mon code.

    Ça fonctionne maintenant mais c'est quand même déroutant ce système !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [QReport] Erreur bizarre
    Par vali dans le forum Composants VCL
    Réponses: 3
    Dernier message: 01/03/2009, 01h25
  2. problèmes bizarres avec jdbc
    Par jaimepasteevy dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 12/12/2003, 12h00
  3. taille de structure bizarre ...
    Par lyrau dans le forum C
    Réponses: 3
    Dernier message: 20/11/2003, 10h46
  4. Un String Bizarre
    Par YanK dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 11h05
  5. Réponses: 4
    Dernier message: 28/09/2002, 00h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo