Pb de variable dans une fonction

cs_Yoann19 Messages postés 8 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 11 novembre 2006 - 19 déc. 2004 à 19:41
cs_Yoann19 Messages postés 8 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 11 novembre 2006 - 20 déc. 2004 à 11:29
Bonjour

Voila mon problème :

Je me sers de loadVariablesNum pour récupérer une variable d'un script php :

<?
//exemple de variable récupérée :
echo '&tableau=[[1,1,2,2],[1,1,1,1],[1,1,1,1],[1,0,0,0]]';
?>

Dans le script de flash j'ai le code :

//si la taille de la variable tableau est bien de 371
if (tableau.length == 371)
{
//fonction permettant l'affichage d'une carte avec les coordonnees //du tableau
buildmap(tableau);

//permet de vérifier si la variable récupérée est correcte
_root.ret=tableau;
}

Le problème est que la fonction buildmap ne fonctionne pas alors que la variable est bien initialisée.
J'ai essayé en créant une variable directement dans le code flash :

tableau=[[1,1,2,2],[1,1,1,1],[1,1,1,1],[1,0,0,0]];

Et là, la fonction builmap marche sans probleme et m'affiche correctement la carte.

Je ne vois pas pourquoi cette fonction ne marche pas avec la variable provenant du script php.

Si quelqu'un pouvait m'aider, il ferait un heureux.

Merci d'avance.

4 réponses

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
19 déc. 2004 à 19:56
Il faut savoir que ton PHP envoie des variables uniquement sous forme "texte" à Flash.

C'est à dire que ta variable Tableau arrive sous Flash dans ton Flash sous forme : "[[1,1,2,2],[1,1,1,1],[1,1,1,1],[1,0,0,0]]"
Donc, ce n'est pas un tableau !

pour vérifier tout seul, il t'aurais suffit de faire un "trace(Tableau)" une fois ta variable récupérée du PHP, tu t'en serais rendu compte seul.

Peg'
0
SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
19 déc. 2004 à 23:27
Une solution peut-être :

function parseArray (str:String) :Array
{
var tab =  new Array ();
tab = str.split("|");
for (var i in tab)
tab[i] = tab[i].split(",");
return tab;
}


Si tu envois à flash une chaîne du type :
"1,1,2,2|1,1,1,1|1,1,1,1|1,0,0,0"

avec des | entre chaque tableau et des , entre chaque valeur : ça marche très bien.

Essaie ça :
var php  = "1,1,2,2|1,1,1,1|1,1,1,1|1,0,0,0";
var tmp = parseArray(php);
trace (tmp);


A toi de parfaire !
SuperDevy
0
SuperDevy Messages postés 842 Date d'inscription dimanche 24 novembre 2002 Statut Membre Dernière intervention 2 juillet 2007
19 déc. 2004 à 23:37
function parseArray (str:String) :Array
{
str = str.slice (2, str.length-2);
var tab = new Array ();
tab = str.split ("],[");
for (var i in tab)
tab[i] = tab[i].split (",");
return tab;
}
0
cs_Yoann19 Messages postés 8 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 11 novembre 2006
20 déc. 2004 à 11:29
Merci beaucoup pour votre aide !

Hier j'ai commencé également à utiliser split pour extraire mes données, ca marchait mais le code n'était pas encore tout à fait au point. Maintenant c'est parfait grâce au code que tu m'as fourni SuperDavy ! J'aurai du faire les changements sur mes données brutes directement dans flash au lieu de le faire dans le script php. Maitenant je ferai plus l'erreur. Merci encore.
0
Rejoignez-nous