繁体   English   中英

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

[英]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;

您要查找的概念称为变量变量(至少在PHP中称为变量变量)。 这是官方文档和有用的教程 变量变量的语法是双美元符号($$)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM