2008-09-24 8 views
1

私は一緒に追加したい値をまとめてフォームに入力します。現在、フォームには11行がありますが、将来は大きくなる可能性があります。PHPで生成された変数名を使用できますか?

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

私が一緒に追加したいすべての値はHTMLフォームから来ている:私は簡単のようなものと一緒にすべての値を追加することができます。私はジャバスクリプトを避けたい。

しかし、特にそれがはるかに大きくなると、手動で行う必要はありません。

<?php 

$tempTotal = 0; 

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

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


echo $tempTotal; 

?> 

は私が可能に何をしたいです。(アイデアを試してみるだけで、いくつかのテストコードである)これは、ループを使用して一緒にすべての値を追加することで私の試みですが、それは「未定義の変数」エラーを返しますPHPで?

答えて

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

これは、あなたが望むことを行います。しかし、実際には、この種のものに配列を使用することを検討するかもしれません。

+0

それはうまくいった!迅速なソリューションをありがとう。 – Haabda

+0

また、 '$( 'variable_name'。$ var}' – UltimateBrent

3

なぜアレイを使用しないのですか?フォームにfoobar []のような名前を付けると、PHPの配列になります。

+0

を。フォーム内のすべてのフィールドの名前が[]で終わる同じ名前を持つ場合、$ _POSTの配列になります。 – unexist

+0

私はそれを知らなかった!ありがとうございました。それは非常に有用になるかもしれません。 – Haabda

2

必要な値はフォームから投稿されますか?その場合は、フォームフィールドの生成された名前と一致する$ _POST変数のキーを反復することができます。

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

あなたはそれの上にデータを格納するための配列、およびだけでループを使用することができます

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

を試してみてください。

$tempTotal = 0; 

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

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

または簡潔にするために、foreachループを使用します。

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

あなたが探している概念は、変数variable(少なくともそれがPHPであることと呼ばれています)と呼ばれていること。ここに公式documentationと有用なtutorialがあります。変数変数の構文はダブルドル記号($$)です。次に、あなたのPHPにはこのような合計取得

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

::私は入力を与える。..ユネキシストのソリューション@使用する

7

は、のような名前をフィールドための

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

を '[]'各入力名の最後に、PHPは$ _REQUEST ['myInput']を自動的に配列にします。 PHPの便利な機能!

2

POSTの値を収集しようとしている場合は、実際には配列を使用する必要があります。手動で使用して一緒にこのような配列を有する片に回避することができる:

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

$_POST["vals"]次いでなりアレイ(「1」、「2」)。

1

PHP生成変数を含むすべてのケースの約99%が、間違ったことです。私はちょうど再反復よ他の人が言ったこと:

使用しているもの私が話しているその配列

関連する問題