Concaténer le nom de deux variables

Invité
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 00:18

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

Invité
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 00:25

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

Mammouth du PHP | 19672 Messages

06 nov. 2005, 00:28

$personne{$nombre} = "valeur xyz";
Comme ça, tu construis dynamiquement une nouvelle variable.

Si nombre vaus 5 par exemple, tu pourras ensuite appeler $personne5 directement.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 00:31

Mais euh, il faut remettre une correspondance lorsqu'on définit le nom de cette variable si je comprends bien ?

Mammouth du PHP | 19672 Messages

06 nov. 2005, 00:33

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 00:45

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

Mammouth du PHP | 19672 Messages

06 nov. 2005, 00:49

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 00:53

D'accord, merci bien

On peut considéré ce sujet comme résolu ;)

Bonne soirée

Invité
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 00:56

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

Mammouth du PHP | 19672 Messages

06 nov. 2005, 10:06

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?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 10:42

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 ?

Eléphant du PHP | 353 Messages

06 nov. 2005, 10:45

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.

Invité
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 10:49

Oula, tu peux t'expliquer ? Je vois pas la comme ça :s

Mammouth du PHP | 19672 Messages

06 nov. 2005, 10:50

À 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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

06 nov. 2005, 10:52

mais la question est : comment faire des tableaux indexés ?