Page 1 sur 3
Concaténer le nom de deux variables
Posté : 06 nov. 2005, 00:18
par Invité
Bonsoir,
je voudrais savoir s'il est possible de concaténer le nom de deux variables :
Une nommée $personne (je ne veux pas que cette partie change, c'est en quelque sorte un préfixe) et la deuxième variable $nombre
Je voudrais que cela donne ceci :
- $personne1
- $personne2
- $personne3
sachant que les numéros sont gérés à la ligne précédente :
$nombre = rand(1,11);
La concaténation de ces deux variables permettrait l'upload de valeur correspondant à cette combinaison.
c'est à dire que si la concaténation des deux donne $personne1, hé bien les valeurs prises seront par exemple le sexe (M) et d'autres informations, chiffrées elles, qui serviraient dans un calcul.
Cette concaténation serait dans une variable do.while
Merci
Posté : 06 nov. 2005, 00:25
par Invité
J'ajoute que les différentes variables ont déjà une valeur, prise sur la base de donnée, et que donc si la variable donne $personne1, que ça prenne la valeur provenant de la base de donnée
Posté : 06 nov. 2005, 00:28
par Cyrano
$personne{$nombre} = "valeur xyz";
Comme ça, tu construis dynamiquement une nouvelle variable.
Si nombre vaus 5 par exemple, tu pourras ensuite appeler $personne5 directement.
Posté : 06 nov. 2005, 00:31
par Invité
Mais euh, il faut remettre une correspondance lorsqu'on définit le nom de cette variable si je comprends bien ?
Posté : 06 nov. 2005, 00:33
par Cyrano
TU veux dire quoi au juste ? Tu demandais si on pouvait concaténer, je te dis oui et comment, maintenant, je ne saisis pas ce que tu veux faire pour autant.
Posté : 06 nov. 2005, 00:45
par Invité
Hé bien en fait, je voulais savoir si quand on fait cette concaténation, le nom obtenu garde la valeur, je m'explique :
on fait d'abord ceci, en haut du fichier, sachant que le $nom est obtenu par la session créée lors de la connection.
$requete = mysql_query("SELECT * FROM membre WHERE `nom`='$nom");
$var = mysql_fetch_array ($requete);
$personne1 = $var['personne1'];
// on continue les updates jusquà 11, le maximum
en admettant que $personne1 = 2 (ce sera toujours un chiffre), lorsque l'on "reconstitue" la variable, et qu'elle donne $personne1, est-ce que la valeur 2 lui est associée, ou fait-il faire une correspondance ?
Merci
Posté : 06 nov. 2005, 00:49
par Cyrano
Si tu crées une variable, quelle que soit la méthode, il faut lui assigner une valeur toi-même, ça ne se fera pas tout seul. Tu peux donc attribuer la valeur au moment de la création.
Posté : 06 nov. 2005, 00:53
par Invité
D'accord, merci bien
On peut considéré ce sujet comme résolu
Bonne soirée
Posté : 06 nov. 2005, 00:56
par Invité
Ah oui mais non, je fais comment moi, je viens d'y penser. Je peux pas attribuer les valeurs venant de la base de donnée comme ça...
A moins que je puisse faire, dans la liste de ce que je prends sur la base de donnée :
$personne{$nombre}=$var['personne{nombre}'];
mais ça ne me semble pas possible ... :s
Posté : 06 nov. 2005, 10:06
par Cyrano
Bon, je comprends pas tes manipulations de valeur : les variables contenant les val;eurs récupérées de la base existent déjà, d'une manière où d'une autre. Tu veux ensuite créer dynamiquement des nouvelles variables : parfait, mais je n'arrive pas à comprendre ton raisonnement?
Posté : 06 nov. 2005, 10:42
par Invité
Hé bien en fait, je veux qu'une variable au hasard soit prise (de $armee1 à $armee9) pour qu'ensuite soit effectué un calcul, et que toutes les possibilités de calculs soient exploitées, sans arriver à un code de 150 pages.
En effet, je souhaite que les affrontements, puisque c'est de ça qu'il s'agit, se poursuivent entre les joueurs jusqu'à ce que le total des armées
$armeetotale=$armee1+$armee2+...+$armee9;
$armeetotale_d=$armee1_d+$armee2_d+...+$armee9_d;
Soit inférieur à 0, c'est à dire qu'ils ne puissent plus continuer le combat, donc que celui ci s'arrete (d'où un do-while) lorsque qu'une des deux armée (_d pour le défenseur) est inférieure à 0.
Est-ce plus clair ?
Posté : 06 nov. 2005, 10:45
par nicolas
Je crois que tu gagnerais énormément à utiliser des tableaux plutôt que de te compliquer la vie avec des variables dynamiques.
Utiliser $nombre[$i] plutôt que $nombre{$i} me semble nettement plus simple.
Posté : 06 nov. 2005, 10:49
par Invité
Oula, tu peux t'expliquer ? Je vois pas la comme ça :s
Posté : 06 nov. 2005, 10:50
par Cyrano
À mon avis, tu aurais grand intérêt dans ce cas à utiliser des tableaux indexés plutôt que des variables dynamiques. Le nom reste le même, mais les valeurs peuvent varier selon l'index.
Tu auras donc $armee[0], $armee[1], ..$armee[9], voire davantage.
Faire un total sera alors infiniment plus simple et tu n'as même pas besoin de connaitre le nombre d'index dans chaque tableau, qu'il y en ait 3 ou 250, une simple boucle suffisant:
$total_armee = 0;
$nb_armees = count($armee);
for($i = 0; $i < $nb_armees; $i++)
{
$total_armee += $armee[$i];
}
C'est tout. Tu fais la même chose avec par exemple $armee_d et $total_armee_d et ce comparer les résultats aentre les deux.
Posté : 06 nov. 2005, 10:52
par Invité
mais la question est : comment faire des tableaux indexés ?