Array à plusieurs dimensions

Résolu
ozitoun Messages postés 115 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 25 mars 2008 - 6 juil. 2005 à 13:54
ozitoun Messages postés 115 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 25 mars 2008 - 8 juil. 2005 à 15:28
Bonjour,


Voilà mon soucis... mes tableaux CalsseB et ClasseC ne fonctionnent pas... il ne sont pas remplis alors que bGroupe[j].nodeName; et cGroupe[k].nodeName; ne sont pas vides... du coup mes variables
infoA2 = ClasseB[1][0];
infoA3 = ClasseC[2][0][0]; sont en undefined .


Je ne comprends pas si c'est un probleme de déclaration des tableaux ou autre chose.


function traiteXML(success) {
// on récupère toutes les données hiérarchisées du xml dans différents tableaux
if(success) {

aGroupe = xmlExo.firstChild.firstChild.childNodes;
for( i=0; i<aGroupe.length; i++ ) {
ClasseA[i] = aGroupe[i].nodeName;
bGroupe = aGroupe[i].childNodes;
for( j=0; j<bGroupe.length; j++ ) {
ClasseB[i] = new Array();
ClasseB[i][j] = bGroupe[j].nodeName;
cGroupe = bGroupe[j].childNodes;
for( k=0; k<cGroupe.length; k++ ) {
ClasseC[i][j] = new Array();
ClasseC[i][j][k]=cGroupe[k].nodeName;
}
}
}
infoA1 = ClasseA[0];
infoA2 = ClasseB[1][0];
infoA3 = ClasseC[2][0][0];
gotoAndPlay(2);
} else {
info = "erreur";
}


}

Zitoun

6 réponses

cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
7 juil. 2005 à 09:43
Cette histoire de 3 dimensions qui marche pas, ça me plaisait pas! lol



Donc voilà un p'tit test que je viens de faire:



//déclare qqch pour ton tableau à 3 dimensions (de préférence plus grand que tes besoins!

tab3=[ [["1","2"],["3","4"]] , [["5","6"],["7","8"]] , [["9","10"],["11","12"]] ];



//Vérification de la correspondance des cellules:

for(i=0;i<2;i++){

for(j=0;j<2;j++){

for(k=0;k<2;k++){

trace("i"+i+"/j="+j+"/k="+k+"::"+tab3[i][j][k]);

}

}

}



//Remplissage du tableau à 3 dimensions:

for(i=0;i<2;i++){

for(j=0;j<2;j++){

for(k=0;k<2;k++){

//mets ton affectation ici

tab3[i][j][k]="i="+i+"/j="+j+"/k="+k;

}

}

}



//Vérification de l'affectation:

for(i=0;i<2;i++){

for(j=0;j<2;j++){

for(k=0;k<2;k++){

trace(tab3[i][j][k]);

}

}

}



Voilà...en espérant que ça puisse t'être utile (rq: pas de déclaration avec new Array)



@+! Samy
3
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
6 juil. 2005 à 14:31
Moi je déclarerais mes tableaux à l'extérieur des boucles FOR, non?



function traiteXML(success) {
// on récupère toutes les données hiérarchisées du xml dans différents tableaux
if(success) {

aGroupe = xmlExo.firstChild.firstChild.childNodes;
for( i=0; i<aGroupe.length; i++ ) {
ClasseA[i] = aGroupe[i].nodeName;
bGroupe = aGroupe[i].childNodes;

ClasseB[i] = new Array();

for( j=0; j<bGroupe.length; j++ ) {
ClasseB[i][j] = bGroupe[j].nodeName;
cGroupe = bGroupe[j].childNodes;

ClasseC[i][j] = new Array();

for( k=0; k<cGroupe.length; k++ ) {
ClasseC[i][j][k]=cGroupe[k].nodeName;
}
}
}
infoA1 = ClasseA[0];
infoA2 = ClasseB[1][0];
infoA3 = ClasseC[2][0][0];
gotoAndPlay(2);
} else {
info = "erreur";
}



}



...sinon je vois pas...t'as essayé de faire un trace à la place de
l'affectation pour voir si lors de l'affectation y'a vraiment qqch à
affecter?



@+! Samy
0
ozitoun Messages postés 115 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 25 mars 2008
6 juil. 2005 à 17:21
J'ai commencé par déclarer mes tableaux à l'extérieur de la boucle... pas mieux
bGroupe[j].nodeName;
et
cGroupe[k].nodeName;

ne sont pas vides... quand je l'es trace ils sont ok... mon seul soucis est que ça ne remplis pas les tableaux correspondants, seule une valeur est affectée par tableau !!! C'est la dernière valeur.
Quand je trace trace(ClasseB[i][j]); dans la boucle ça marche... une fois sortie de la boucle il ne me reste que cette valeur de fin... comme si à chaque fois la valeur précédente s'effacée.

Merci de l'aide

Zitoun
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
7 juil. 2005 à 08:39
Essaie voir de déclarer tes tableaux comme ça:



ClasseB=new Array();

ClasseC=new Array();



...si t'as la dernière...soit il efface (ce qui m'étonnerait), soit il recrée ton tableau ou alors il est mal créé.

J'ai pas bcp joué avec les tableaux, donc si là ça marche pas, j'vais sécher j'crois!



@+! Samy
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ozitoun Messages postés 115 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 25 mars 2008
7 juil. 2005 à 09:14
Salut Samy...

grâce à tes remarques j'avance...

j'ai effectivement replacé le tablo ClasseA hors de la boucle car en fait il recréé le tablo à chaque fois et c'était donc pour ça qu'il n'avait que la dernière valeur.
Pour le tablo ClasseC par contre ça ne parche pas mieux, j'ai donc compilé les variables i et j :

ClasseA = new Array();
ClasseB = new Array();
ClasseC = new Array();


xmlExo = new XML;
xmlExo.ignoreWhite = true;
xmlExo.onLoad = traiteXML;
xmlExo.load("apprend.xml");
// attend la fin du chargement du fichier avant de poursuivre le traitement
if(xmlExo.loaded ) {
gotoAndPlay(2);
} else {
gotoAndPlay(1);
}
/*----------------------------------------------------------------*/
function traiteXML(success) {
// on récupère toutes les données hiérarchisées du xml dans différents tableaux
if(success) {

aGroupe = xmlExo.firstChild.firstChild.childNodes;
i=0;
//for( i=0; i


}

Je n'arrive donc pas à faire un tableau à 3 dimension, mais je dois pouvoir m'en sortir comme ça.

Merci pour ta précieuse aide
Zitoun
0
ozitoun Messages postés 115 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 25 mars 2008
8 juil. 2005 à 15:28
Zitoun
0