2008-09-24 6 views
1

J'ai un tas de valeurs que je voudrais ajouter ensemble qui sont saisies dans un formulaire. À l'heure actuelle, le formulaire a 11 lignes, mais il pourrait s'agrandir à l'avenir. Je peux facilement ajouter toutes les valeurs avec quelque chose comme:Puis-je utiliser un nom de variable généré en PHP?

$total = $value1 + $value2 + ... + $value11; 

Toutes les valeurs que je veux additionner viennent d'une forme HTML. Je veux éviter javascript. Mais, je veux éviter de devoir le faire manuellement, surtout s'il devient beaucoup plus grand. Ceci est ma tentative d'ajouter toutes les valeurs ensemble en utilisant une boucle, mais il renvoie une erreur « variable non définie » (il est juste un code de test pour essayer l'idée):

<?php 

$tempTotal = 0; 

$pBalance1 = 5; 
$pBalance2 = 5; 
$pBalance3 = 5; 

for ($i = 1 ; $i <= 3 ; $i++){ 
    $tempTotal = $tempTotal + $pBalance.$i; 
} 


echo $tempTotal; 

?> 

Est-ce que je veux faire possible en PHP?

Répondre

7
for ($i = 1 ; $i <= 3 ; $i++){ 
    $varName = "pBalance".$i; 
    $tempTotal += $$varName; 
} 

Ceci fera ce que vous voulez. Cependant, vous pourriez en effet envisager d'utiliser un tableau pour ce genre de chose.

+0

Cela a fonctionné! Merci pour la solution rapide. – Haabda

+0

Vous pouvez également utiliser '$ ('nom_variable'. $ Var}' – UltimateBrent

3

Uhm pourquoi n'utilisez-vous pas un tableau? Si vous donnez un nom aux formes comme foobar [] ce sera un tableau en PHP.

+0

Ce que je parle. Lorsque le nom de chaque champ du formulaire porte le même nom et se termine par [], il s'agit d'un tableau dans $ _POST. – unexist

+0

Je n'ai jamais su ça! Je vous remercie. Cela pourrait être très utile. – Haabda

2

Les valeurs dont vous avez besoin sont postées à partir d'un formulaire, n'est-ce pas? Si tel est le cas, vous pouvez parcourir les clés de la variable $ _POST correspondant aux noms générés de votre champ de formulaire.

foreach($_POST as $key=>$value) 
{ 
    if(strpos($key, 'pBalance')===0) 
    { 
    $final_total += $value; 
    } 
} 
0

Essayez

$varName = 'pBalance' . $i; 
$tempTotal = $tempTotal + $$varName; 
2

Vous pouvez utiliser un tableau pour stocker vos données, et la boucle juste au-dessus.

$tempTotal = 0; 

$balances[] = 5; 
$balances[] = 5; 
$balances[] = 5; 

for ($i = 0; $i <= count($balances); $i++) { 
    $tempTotal = $tempTotal + $balances[$i]; 
} 

Ou par souci de concision, utilisez une boucle foreach:

foreach($balances as $balance) { 
    $tempTotal += $balance; 
} 
-1

Le concept que vous cherchez est une variable appelée variable (au moins il est appelé que PHP). Voici le documentation officiel et un tutorial utile. La syntaxe d'une variable variable est un signe dollar double ($$).

7

J'utiliser @ solution de Unexist .. donner les champs de saisie des noms tels que:

<input name="myInput[]" /> 
<input name="myInput[]" /> 
<input name="myInput[]" /> 
... 

Ensuite, dans votre PHP obtenir la somme comme ceci:

$total = array_sum($_REQUEST['myInput']); 

En raison de la '[]' à la fin de chaque nom d'entrée, PHP fera automatiquement de $ _REQUEST ['myInput'] un tableau. Une fonctionnalité pratique de PHP!

2

Si vous essayez de collecter les valeurs d'un POST, vous devez vraiment utiliser un tableau. Vous pouvez éviter d'avoir à reconstituer manuellement ensemble un tel réseau en utilisant:

<input type="text" name="vals[]" value="one" /> 
<input type="text" name="vals[]" value="two" /> 

$_POST["vals"] sera alors array (« un », « deux »);

1

Dans environ 99% des cas impliquant une variable générée PHP, vous faites The Wrong Thing.Je vais juste Réitérons ce que les autres ont dit:

UTILISER UN MATRICE

Questions connexes