Variables dynamique

Variables dynamique - PHP - Programmation

Marsh Posté le 14-04-2010 à 15:22:10    

Bonsoir à tous,
 
J'ai un petit souci avec l'usage de variables "dynamiques" :
 

Code :
  1. $nom1="Marcel";
  2. $nom2="Yvan";
  3. for($i=1;$i<=2;$i++)
  4. {
  5.   echo $nom{$i};
  6. }


 
Ca m'affiche om (les caractères 1 et 2 de nom)
 
Je voudrais que ça m'affiche MarcelYvan... où est l'erreur ?
 
 
---edit--
 
En fait fallait faire

Code :
  1. echo ${"nom".$i};
  2. //ou
  3. echo ${"nom$i"};

Message cité 1 fois
Message édité par zezette le 14-04-2010 à 15:36:22

---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 14-04-2010 à 15:22:10   

Reply

Marsh Posté le 14-04-2010 à 18:36:14    

Oui, ou sinon je te recommande tout simplement de ne jamais utiliser ça  :lol:

Reply

Marsh Posté le 15-04-2010 à 09:34:15    

zezette a écrit :

Bonsoir à tous,
 
J'ai un petit souci avec l'usage de variables "dynamiques" :
 

Code :
  1. $nom1="Marcel";
  2. $nom2="Yvan";
  3. for($i=1;$i<=2;$i++)
  4. {
  5.   echo $nom{$i};
  6. }


 
Ca m'affiche om (les caractères 1 et 2 de nom)
 
Je voudrais que ça m'affiche MarcelYvan... où est l'erreur ?
 
 
 
---edit--
 
En fait fallait faire

Code :
  1. echo ${"nom".$i};
  2. //ou
  3. echo ${"nom$i"};



Code :
  1. $nom1="Marcel";
  2. $nom2="Yvan";
  3. for($i=1;$i<=2;$i++)
  4. {
  5.    $var=$nom.$i
  6.    echo $$var;
  7. }


 
Mais bon, c'est pas conseillé


Message édité par antac le 15-04-2010 à 09:34:57
Reply

Marsh Posté le 15-04-2010 à 11:54:38    

Moi je ferais plutôt :

Code :
  1. $noms = array("Marcel","Yvan" );
  2. foreach ($noms as $nom){
  3.     echo $nom ;
  4. }

Reply

Marsh Posté le 15-04-2010 à 11:55:39    

utilise un tableau plutôt ,ce sera plus propre et plus pratique

Reply

Marsh Posté le 15-04-2010 à 13:30:56    

+1 pour le tableau. Les variables dynamiques sont à éviter, y'a que qq cas particuliers où ça peut être utile.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 15-04-2010 à 14:12:10    

ouais, évidemment, mais je dois récuperer un formulaire qui a été fait par qqn d'autre... et vu la taille du formulaire, j'avais pas envie de le refaire... alors j'ai fait un for qui me tape tout dans un tableau (pour que ce soit propre après) ;)


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
Reply

Marsh Posté le 15-04-2010 à 14:13:28    

tu as le droit de peter les genoux de celui qui a crée le formulaire :d

Reply

Marsh Posté le 15-04-2010 à 14:16:31    

pour rappel, tu peux faire ça :

Code :
  1. foreach($_POST as $Key => FieldValue)
  2. {
  3.     switch($Key)
  4.     {
  5.          case 'nomchamp1':
  6.              // traitement spécifique pour ce champ
  7.              break;
  8.          ...
  9.          default:
  10.              // traitement classique pour les autres champs
  11.              break;
  12.     }
  13. }


Message édité par rufo le 15-04-2010 à 14:17:30

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 16-04-2010 à 12:22:38    

C'est pas plutôt switch($FieldValue) ?

Reply

Marsh Posté le 16-04-2010 à 12:22:38   

Reply

Marsh Posté le 16-04-2010 à 13:51:23    

Fred999 a écrit :

C'est pas plutôt switch($FieldValue) ?


 
Ben non, $Key contient le nom du champ du formulaire et $FieldValue sa valeur. Si y'a besoin de faire un traitement particulier pour certains champs du formulaire, faut bien filtrer sur le nom du champ et pas la valeur. Ex : on traite généralement pas de la même manière un champ de type select qu'un input type text. Ou plus parlant, un champ input type text est traité différemment d'un champ input type file ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 16-04-2010 à 13:52:45    

Ah pardon, j'ai trop l'habitude de l'utiliser comme ça :o
 
My mistake.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed