Insertion variable dans l'attribut d'une variable prédéfinie

Eléphanteau du PHP | 23 Messages

26 avr. 2012, 13:49

Bonjour,

Dans l'intention de raccourcir le code ci-dessous, je souchetais connaitre la méthode permettant d'insérer une variable au sein de l'attribut d'une variable prédéfinie (en l'occurrence, $_POST).

Ceci me permettrait de passer de ceci :
				
				echo '<p>';
				echo htmlspecialchars($_POST["reponse1"]);
				$reponse1 = "pascaline";
				$compteur = 0;
				if ($_POST["reponse1"]==$reponse1) {
					echo "</br>";
					echo "échec ";
					echo $compteur-1;
					$compteur=$compteur-1;
				}
				else {
					echo "</br>";
					echo "succès ";
					echo $compteur+1;
					$compteur=$compteur+1;
				}
				echo '</p>';
				echo '<p>';
				echo htmlspecialchars($_POST["reponse2"]);
				$reponse2 = "stylo";
				if ($_POST["reponse2"]==$reponse2) {
					echo "</br>";
					echo "échec ";
					echo $compteur-1;
					$compteur=$compteur-1;
				}
				else {
					echo "</br>";
					echo "succès ";
					echo $compteur+1;
					$compteur=$compteur+1;
				}
				echo '</p>';
				echo $compteur;
				
à cela :
				
				$i = 0;
				echo '<p>';
				echo htmlspecialchars($_POST["reponse"$i]);
				$reponse1 = "pascaline";
				$reponse2 = "stylo";
				$compteur = 0;
				for (;$i=7;) {
				if ($_POST["reponse"$i]==$reponse$i) {
					echo "</br>";
					echo "échec ";
					echo $compteur-1;
					$compteur=$compteur-1;
				}
				else {
					echo "</br>";
					echo "succès ";
					echo $compteur+1;
					$compteur=$compteur+1;
				}}
				
Par avance, je vous remercie :)

ViPHP
ViPHP | 2577 Messages

26 avr. 2012, 15:26

$_POST['??????'] = '???????'
Ca doit marcher.
Mais il est mieux à mon avis de mettre les $_POST dans des variables pour travailler sur ces variables.

Eléphanteau du PHP | 23 Messages

26 avr. 2012, 16:14

Merci :)

Je n'ai pas trop compris comment obtenir l'équivalent d'un $_POST["a"$b] à partir d'un $_POST['??????'] = '???????', mais effectivement, le plus propre est la 2nd solution que tu proposes :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 avr. 2012, 18:32

Salut,


Utilise foreach ou la concaténation !

Ta syntaxe n'est pas correcte.


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 23 Messages

03 mai 2012, 10:46

Merci :)
Pour le moment, j'ai du mal a saisir l'intérêt de parcourir des tableaux, mais je vais creuser ça :)
(d'autant qu'apparemment, ça me permettra de comprendre la différence entre les deux types de boucle).

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 mai 2012, 13:57

Un index de tableau n'est ni plus ni moins qu'une chaine de caractère. Si tu sais concaténer des variables et des chaines pour afficher des données à l'écran, tu peux tout aussi bien le faire pour construire tes index : $_POST["reponse" . $i] :)

Pour le foreach, l'intérêt est principalement de parcourir les tableaux associatifs sans avoir à connaitre le nom des différents index. Il permet également de simplifier la syntaxe de ton code quand tu ne connais pas le nombre de valeurs de ton tableau.

Par exemple, si tu as un tableau qui recense les mois de moins de 5 lettres :
$monTableau = array(
  3 => 'mars'
  , 5 => 'mai'
  , 6 => 'juin'
  , 8 => 'aout'
);
Déterminer que ta boucle for() ou ta boucle while() doit commencer à compter à 3, puis sauter 4 et 7 et enfin s'arrêter après 8 est nettement plus compliquée à écrire qu'un foreach qui va parcourir les éléments de ton tableau un par un sans se soucier de la logique de construction de celui-ci :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 23 Messages

14 mai 2012, 11:33

Merci beaucoup pour cet éclairage, Ryle :).