Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2956 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème variable dynamique et tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème variable dynamique et tableau

n°1137223
burtonien
Posté le 01-07-2005 à 14:31:07  profilanswer
 

Hello !
J'ai un problème pour définir un index de tableau avec une variable dynamique.
 
Par exemple, je construis la variable  

Code :
  1. $machin = "[2][3]";
  2. $table{$machin} = "salut les gens !"


 
Si je fais un var_dump de ce tableau par la suite, je vais voir que  [[2][3]] est l'index de l'élément "Salut les gens". C'est assez étrange, il intégre lui même des nouveaux crochets. Est ce qu'il y à un moyen de ne pas intégrer ces nouveaux crochets, c'est à dire substituer la variable $machin par le contenu exacte de la chaine, de façon à avoir le bon index.
 
Je pense que c'est surement une question de variable dynamique, mais j'ai fait pas mal d'essais, et à chaque fois les index sont mauvais... Voilà, si quelqu'un à la solution, merci d'avance !

mood
Publicité
Posté le 01-07-2005 à 14:31:07  profilanswer
 

n°1137292
sielfried
Posté le 01-07-2005 à 14:58:48  profilanswer
 

C'est peut-être faisable mais ça me semble particulièrement crade. Quel intérêt de faire ça plutôt qu'un truc comme ça :
 

Code :
  1. $indice1 = 2;
  2. $indice2 = 3;
  3. $table[$indice1][$indice2] = "salut les gens !";


 
?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1137294
sielfried
Posté le 01-07-2005 à 15:00:34  profilanswer
 

Bon sinon tu peux sûrement faire ça :
 

Code :
  1. $machin = "[2][3]";
  2. eval('$table'.$machin.' = "salut les gens !";');


 
Mais voilà, c'est moche.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1137295
burtonien
Posté le 01-07-2005 à 15:03:08  profilanswer
 

C'est crade parce que ça sort du contexte. En vrai le corps que j'ai donné est dans une fonction récursive, et le nombre de crochets dépend du nombre de récursivités. D'où l'utilisation de variables dynamiques. Voilà le vrai code, c'est peut-être plus parlant
 

Code :
  1. function recurs($category)
  2. {
  3.     global $var;
  4.     global $table;
  5.     $parentCategory = $category->getParentCategory();
  6.     if ( $parentCategory )
  7.     {
  8.      
  9.       recurs($parentCategory);
  10.     }
  11.     $var .= "[" .$category->getID(). "]";
  12.     $table{$var} = $category;
  13. }


 
Voilà voilà !

n°1137296
burtonien
Posté le 01-07-2005 à 15:03:39  profilanswer
 

sielfried a écrit :

Bon sinon tu peux sûrement faire ça :
 

Code :
  1. $machin = "[2][3]";
  2. eval('$table'.$machin.' = "salut les gens !";');


 
Mais voilà, c'est moche.


 
Ok, je vais essayer ça, merci.

n°1137314
burtonien
Posté le 01-07-2005 à 15:12:48  profilanswer
 

Ca marchote ce que tu m'as donné, mais bizarrement le contenu du tableau est bien bizarre... Le problème c'est que si je passe un objet au lieu d'une chaine, il me dit : "Warning: Cannot use a scalar value as an array in c:\...) : eval()'d code on line 1.
 
Tu crois que le secret c'est d'utiliser la fonction eval ?

n°1137327
sielfried
Posté le 01-07-2005 à 15:21:13  profilanswer
 

burtonien a écrit :

Ca marchote ce que tu m'as donné, mais bizarrement le contenu du tableau est bien bizarre... Le problème c'est que si je passe un objet au lieu d'une chaine, il me dit : "Warning: Cannot use a scalar value as an array in c:\...) : eval()'d code on line 1.
 
Tu crois que le secret c'est d'utiliser la fonction eval ?


 
J'ai pas bien compris. T'as un exemple qui te sort ce warning ?
 
Sinon oui, je dirais qu'eval est a priori adapté, en admettant qu'il n'y ait aucune solution sans, ce que je n'ai pas vérifié. ;)


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1137342
burtonien
Posté le 01-07-2005 à 15:31:00  profilanswer
 

En fait si je fais ça :
 

Code :
  1. function recurs($category)
  2. {
  3.     global $var;
  4.     global $table;
  5.     $parentCategory = $category->getParentCategory();
  6.     if ( $parentCategory )
  7.     {
  8.       recurs($parentCategory);
  9.     }
  10.  
  11.     $var .= "[" .$category->getID(). "]";
  12.     eval('$table'.$var.' = $category;');
  13.    
  14. }


 
Il me sort : Warning: Cannot use a scalar value as an array in c:\... : eval()'d code on line 1
 
Encore plus fou, si je fais :

Code :
  1. eval('$table'.$var.' = "PHP c\'est fantastique;');

à la place de

Code :
  1. eval('$table'.$var.' = $category;');

(j'ai juste remplacé l'objet par une chaîne) et quand je fais un var_dump($table) à la fin de la récursion, il me sort :  
Array ( [8] => LL PHP c'est fantastique [4] => Le PHP L'est fantastique )  :lol:


Message édité par burtonien le 01-07-2005 à 15:31:51
n°1137352
burtonien
Posté le 01-07-2005 à 15:36:11  profilanswer
 

Merde je crois que je viens de comprendre le warning... En fait, je lui donne un objet, alors que lui il veut un tableau. Arh... C'est logique en même temps qu'il m'envoye chier.

n°1137354
sielfried
Posté le 01-07-2005 à 15:37:42  profilanswer
 

Fous ce que tu mets dans le eval dans une variable que tu echo avant de l'appeler.
 
Tu verras bien mieux je pense...


Message édité par sielfried le 01-07-2005 à 15:38:47

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
mood
Publicité
Posté le 01-07-2005 à 15:37:42  profilanswer
 

n°1137362
burtonien
Posté le 01-07-2005 à 15:44:33  profilanswer
 

Apparemment c'est bon :  

Code :
  1. eval('$table'.$var.' = array('.$category->getID().' => $category);');


 
Je sais pas si c'est la solution ultime, mais merci de ton aide !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème variable dynamique et tableau

 

Sujets relatifs
Probleme de gestion d'erreur O.Osyntaxe variable php dans onClick
VB Excel - Utiliser une variable pour conditionner une boucleprobleme d affichage avec un tableau html
problème I.E. pour flash et pas firefoxProblème de mise en page sous Internet Explorer
CSS: largeur variable et blockquoteJSP : probleme utilisation jsp:useBean
probleme acev application excel avec macro 
Plus de sujets relatifs à : Problème variable dynamique et tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR