Php 使用动态命名循环多个POST变量
我希望这对于标题和我想要达到的目标来说是有意义的,所以这里是 我有一个表单,其中显示了1到30个要输入的字段-字段的数量由用户在前一阶段确定(不总是相同的数量) 如果用户有5个字段需要填写,则所有字段都必须包含数据-如果用户设置了15个字段或30个字段,则相同 我希望能够循环表单中的POST变量,确保它们都已设置,然后将数据插入数据库,或者显示错误 我打算用嵌套的if语句执行30个if语句:Php 使用动态命名循环多个POST变量,php,for-loop,environment-variables,Php,For Loop,Environment Variables,我希望这对于标题和我想要达到的目标来说是有意义的,所以这里是 我有一个表单,其中显示了1到30个要输入的字段-字段的数量由用户在前一阶段确定(不总是相同的数量) 如果用户有5个字段需要填写,则所有字段都必须包含数据-如果用户设置了15个字段或30个字段,则相同 我希望能够循环表单中的POST变量,确保它们都已设置,然后将数据插入数据库,或者显示错误 我打算用嵌套的if语句执行30个if语句: if ($numberOfFields == 1){ if (!$_POST["field1_t
if ($numberOfFields == 1){
if (!$_POST["field1_text"]){$error = 1;}
};
if ($numberOfFields == 2){
if (!$_POST["field1_text"]){$error = 1;}
if (!$_POST["field2_text"]){$error = 1;}
};
但这似乎是一个非常冗长的方式,我想知道是否有人有任何建议或指针
我想知道这样做是否有效:
for ($q = 1; $q <= $numberOfFields; $q ++){
if (!$_POST["field'".$q."'_text"]){
$error = 1;
}
}
对于($q=1;$q使用以下选项:
for ($q = 1; $q <= $numberOfFields; $q++){
if (!$_POST["field".$q."_text"]){
$error = 1;
}
}
对于($q=1;$q可以这样做,使用foreach
而不是for
:
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$error = false;
foreach($_POST as $key => $value)
{
if(strpos($key, 'field') === 0)
{
if($value == '')
{
$error = true;
break;
}
}
}
if($error)
{
// not all fields have a value - show message
}
}
如果在表单上使用输入数组,而不是手动使用串联的数字填充输入名称,则会更容易。例如:
<input type="text" name="field[]" />
<input type="text" name="field[]" />
<input type="text" name="field[]" />
除了在中连接$q
,您还添加了不必要的(有害的)单引号。此外,我只会使用简单的“双引号插值”,如:if(!$\u POST[“field{$q}\u text”])){
.2个小时的生命就这样结束了-感谢你的快速反应-我认为我的思路是正确的。你能对变量进行同样的设置吗?例如$var.$q=$\u POST[“field”.$q.“\u text”]@Paul对于变量,我还建议将它们分配到一个数组,如:$myvars=array();$myvars[$q]=$\u POST[“field.”$q.'u text'];
foreach($_POST['field'] as $field)
{
if($field == '')
{
// error - doesn't have a value
}
}