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

JavaScript Discussion :

tableau multidimensionnel


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut tableau multidimensionnel
    Bonjour,

    Je m'arrache les cheveux depuis 2 jours sur un probleme.
    C'est assez complexe mais je vais essayer de faire simple...

    Je n'arrive pas à récupérer en javascript les données d'un tableau issu de php.
    Ce tableau est un tableau 2D correspondant aux données d'une année et d'un mois donnés.
    exemple php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $this->data[2009][1]=1;
    $this->data[2009][2]=2;
    $this->data[2009][3]=2;
    $this->data[2009][4]=1;
    $this->data[2009][5]=2;
    $this->data[2009][6]=1;
    $this->data[2009][7]=1;
    etc...
     
    $this->data[2010][1]=2;
    $this->data[2010][2]=1;
    $this->data[2010][3]=1;
    $this->data[2010][4]=2;
    $this->data[2010][5]=1;
    $this->data[2010][6]=2;
    $this->data[2010][7]=2;
    etc...
    J'arrive à le déclarer en javascript avec une boucle php qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    var Data = new Array(2,12);
    Data[2009,1]=1;
    Data[2009,2]=2;
    Data[2009,3]=2;
    Data[2009,4]=1;
    Data[2009,5]=2;
    Data[2009,6]=1;
    Data[2009,7]=1;
    Data[2010,1]=2;
    Data[2010,2]=1;
    Data[2010,3]=1;
    Data[2010,4]=2;
    Data[2010,5]=1;
    Data[2010,6]=2;
    Data[2010,7]=2;
    mais quand j'essaie de récupérer ces valeurs ben je n'y arrive pas...
    Je souligne que je souhaite récupérer les valeurs d'une année donnée. Cette année est passée dans la fonction par une variable "annee".
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var data_janvier=Data[annee,1];
    ne marche pas....

    Voilà, j'espère avoir été clair...

    HELP !

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 098
    Par défaut
    Salut,
    par curiosité, elle vient d’où cette syntaxe ? Tu travaillais avec quel langage avant ?

    Paske là ça fait pas du tout ce que tu crois. JavaScript est presque plus permissif que PHP (et c’est dire…), et les warnings de JavaScript sont difficilement visibles en général, ce qui n’arrange rien.

    Je vais un peu sortir du sujet, mais je te conseille d’utiliser des outils de déboguage, par exemple :
    – sous Firefox, le module Firebug
    – sous IE8, les outils intégrés (touche F12)
    – sous Opera et Chrome, les outils intégrés également (Maj+Ctrl+I).


    En l’occurence, y’a pas mal de problèmes. D’abord, quand tu crées ton tableau :
    JavaScript initialise un tableau à 1 dimension (toujours), de longueur 2, contenant 2 et 12.

    En JavaScript, les tableaux sont à longueur variable, comme en PHP.

    Ensuite, il faut savoir que la virgule en JavaScript est considérée comme un séparateur dans les expressions (un peu comme le point-virgule). De plus, entre les crochets, on peut mettre n’importe quelle expression, elle sera évaluée avant de servir d’index pour le tableau. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var tab = [4, 7, 15, 1];
    alert(tab[7 - 5]);
    // affiche 15 (résultat de tab[2])
    Dans ton cas, quand l’exéctueur analyse « Data[2009,1] », il voit l’expression 2009,1 avec la fameuse virgule, et il considère ça comme deux expressions. Il ne gardera que la valeur de la dernière expression analysée…
    Donc « Data[2009,1] » est équivalent à « Data[1] ».


    Les tableaux multi-dimensionnels en JavaScript sont en réalité comme en PHP, des tableaux à une dimension dont les éléments sont eux-mêmes des tableaux. C’est donc plus une simulation qu’un réel mécanisme de multi-dimension comme en Java.

    Une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var Data = new Array();
    Data[2009] = new Array();
    Data[2010] = new Array();
     
    Data[2009][1] = 1;
    Data[2009][2] = 2;
    Data[2009][3] = 2;
    // etc.
     
    Data[2010][1] = 2;
    Data[2010][2] = 1;
    // etc.
    Le problème, c’est la longueur du tableau : la propriété length est basée sur le plus grand index utilisé, et pas réellement le nombre d’éléments. Ainsi, Data.length est ici égale à 2011.

    La longueur n’est pas réellement 2011, sinon bonjour la consommation de mémoire, mais fais attention à ce détail quand tu fais des boucles for…
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 54
    Par défaut
    Merci !
    Désolé, je suis vraiment une $*%! en javascript !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/12/2005, 14h41
  2. Réponses: 2
    Dernier message: 27/11/2005, 23h36
  3. Nombre de dimensions d'un tableau multidimensionnel
    Par Bruno75 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/07/2005, 10h03
  4. type de donnée tableau multidimensionnel
    Par opheliegomes dans le forum Débuter
    Réponses: 2
    Dernier message: 03/02/2005, 12h29
  5. [langage] tableau multidimensionnel
    Par totox17 dans le forum Langage
    Réponses: 3
    Dernier message: 03/12/2002, 15h58

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