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 ?