Php 循环遍历所有Post变量并添加数值
我有一张这样的表格Php 循环遍历所有Post变量并添加数值,php,forms,Php,Forms,我有一张这样的表格 <form action="index.php" method="post"> <select name="dropdownOption"> <option value="First Choice +200">First Choice</option> <option value="Second Choice +300">Second Choice</option> </select>
<form action="index.php" method="post">
<select name="dropdownOption">
<option value="First Choice +200">First Choice</option>
<option value="Second Choice +300">Second Choice</option>
</select>
<p><input type="checkbox" value="Rocket +100"> Rocket</p>
首选
第二选择
火箭
我要做的是循环遍历在_POST中发送的每个值,然后将“+”符号后的每个数字相加,并将其放入index.php文件中的一个变量中
例如,如果他们选择了“第二选择”并勾选了“火箭”复选框,那么加起来应该是400(300+100)
在本例中,只有两个不同的选项,但在最终的应用程序中,可能会有20-30个不同的东西,这就是为什么循环是必要的
还有,如何循环遍历每个未隐藏的元素(因此排除隐藏的表单元素)
如果需要负值,只需将选项设置为如下所示:
<option value="Second Choice +-300">Second Choice</option>
$choices = array(
'1' => array('value' => '100', 'text' => 'First choice'),
'2' => array('value' => '150', 'text' => 'Second choice'),
'3' => array('value' => '250', 'text' => 'Third choice'),
);
第二选择
为什么不在值中删除文本,只保留数字数据?
这些值无论如何都不可见,但在代码中,您可以轻松地将数值映射到文本。
换句话说,你可以有这样的东西:
<option value="Second Choice +-300">Second Choice</option>
$choices = array(
'1' => array('value' => '100', 'text' => 'First choice'),
'2' => array('value' => '150', 'text' => 'Second choice'),
'3' => array('value' => '250', 'text' => 'Third choice'),
);
并以如下方式显示数据(或任何其他方式,但在值字段中具有选项ID):
并向用户显示数据:
<?php foreach($selected as $id): ?>
<p>You chose <?php echo $choices[$id]['text']; ?></p>
<?php endforeach; ?>
你选择了
这是一种更好的方法,因为它给了您很大的灵活性。我认为您正在将使用_POST发送的值存储在一个数组中
$total = 0;
foreach($selections as $sel){
$sep = $explode('+', $sel);
$value = (int)$sep[1];
$total += $value;
}
您需要值的第一部分还是仅数值就可以了?仅数值就可以了,我知道如何输出其余的数据您最好使用end()
获取数组中的最后一项,以确保该值不再包含一个字。这是真的,但我正在处理实际提供的代码。不过我做了更改,因为你的观点对记录是有效的,除非你将end($num)
键入int,否则是数值的检查将失败,因为它将是一个字符串。我如何从for each循环中排除对象?@Talon你不能排除特定的输入类型,因为输入类型不是在POST请求中发送的,只有键名称和值。实际的POST请求如下所示name=1&mail=2&site=3
。因此,正如您所见,所有输入类型都被同等对待,无论它们是文本、文本区域、单选、复选框还是隐藏。稍后将使用值,但仅向用户显示计算中未使用的值。
$total = 0;
foreach($selections as $sel){
$sep = $explode('+', $sel);
$value = (int)$sep[1];
$total += $value;
}