我可以在PHP中使用生成的变量名吗?

时间:2008-09-24 22:03:57

标签: php

我有一堆我想要加在一起的值,这些值会输入到表单中。目前,该表格有11行,但未来可能会变大。我可以轻松地将所有值与以下内容一起添加:

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

我想要添加的所有值都来自HTML表单。我想避免使用javascript。

但是,我想避免手动操作,特别是如果它变得更大。这是我尝试使用循环将所有值添加到一起但它返回一个“未定义变量”错误(这只是一些测试代码来尝试这个想法):

<?php

$tempTotal = 0;

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

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


echo $tempTotal;

?>

我想用PHP做什么?

9 个答案:

答案 0 :(得分:7)

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

这将做你想要的。但是你可能会考虑使用数组来做这种事情。

答案 1 :(得分:7)

我会使用@expoist的解决方案..给输入字段命名如:

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

然后在你的PHP中得到这样的总和:

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

由于每个输入名称末尾的'[]',PHP将使$ _REQUEST ['myInput']自动成为一个数组。 PHP的一个方便功能!

答案 2 :(得分:3)

嗯,你为什么不使用阵列?如果你给表单命名像foobar []那么它将是PHP中的一个数组。

答案 3 :(得分:2)

您需要的值是从表单发布的,对吧?如果是这样,您可以遍历$ _POST变量中与表单字段生成的名称匹配的键。

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

答案 4 :(得分: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;
}

答案 5 :(得分:2)

如果您正在尝试收集POST的值,则应该使用数组。您可以使用以下方法避免手动拼凑这样的数组:

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

$_POST["vals"]将是数组(“一”,“两个”);

答案 6 :(得分:1)

在大约99%的涉及PHP生成变量的案例中,你正在做错误的事情。我只是重复其他人所说的话:

使用阵列

答案 7 :(得分:0)

尝试

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

答案 8 :(得分:-1)

您正在寻找的概念称为变量变量(至少在PHP中称为变量变量)。这是官方documentation和有用的tutorial。变量变量的语法是双美元符号($$)。