[英]Can I use a generated variable name in 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中做些什么吗?
for ($i = 1 ; $i <= 3 ; $i++){
$varName = "pBalance".$i;
$tempTotal += $$varName;
}
这将做您想要的。 但是,您确实可以考虑将数组用于此类操作。
我会使用@unexist的解决方案。给输入字段名称,例如:
<input name="myInput[]" />
<input name="myInput[]" />
<input name="myInput[]" />
...
然后在您的PHP中获得如下所示的总和:
$total = array_sum($_REQUEST['myInput']);
由于每个输入名称末尾都有“ []”,PHP将使$ _REQUEST ['myInput']自动成为数组。 PHP的便捷功能!
嗯,为什么不使用数组? 如果您给表单命名,例如foobar [],它将是PHP中的一个数组。
您需要的值是从表单中发布的,对吗? 如果是这样,您可以遍历$ _POST变量中与表单字段的生成名称匹配的键。
foreach($_POST as $key=>$value)
{
if(strpos($key, 'pBalance')===0)
{
$final_total += $value;
}
}
您可以使用数组存储数据,然后循环遍历。
$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;
}
如果您尝试收集POST的值,则应该使用数组。 您可以避免使用以下方法手动拼凑这样的数组:
<input type="text" name="vals[]" value="one" />
<input type="text" name="vals[]" value="two" />
$_POST["vals"]
将是array(“ one”,“ two”);
在涉及PHP生成变量的所有案例中,大约有99%是在做The Wrong Thing。 我只想重申一下别人说的话:
使用阵列
尝试
$varName = 'pBalance' . $i;
$tempTotal = $tempTotal + $$varName;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.