$ _POST可变输入数量?

时间:2013-09-26 23:48:42

标签: php html variables input

如何设置一个系统,该系统读取来自具有用户决定输入数量的表单的$ _POST数据?我可以使用$ _POST [1]之类的索引或类似的东西吗? (例如,创建/删除页面,提交更改并处理用户决定他们想要的页数的输入)

4 个答案:

答案 0 :(得分:6)

在表单中创建名称以方括号结尾的输入变量:

<input name="lines[]" type="text"><br>
<input name="lines[]" type="text"><br>
<input name="lines[]" type="text"><br>

您可以根据需要添加任意数量,也可以在javascript中动态创建它们。

提交表单后,数据将在$ _POST中显示为数组:

echo $_POST['lines'][0];
echo $_POST['lines'][1];
echo $_POST['lines'][2];

答案 1 :(得分:2)

你应该这样做:

foreach($_POST as $k => $v){
    // The action you want to perform for each input
}

为了制作更高级的解决方案,我认为,我们需要更多关于它究竟是什么的信息,你想要实现:)

答案 2 :(得分:1)

您可以使用诸如variables []之类的名称创建字段数组,然后使用foreach循环遍历它们。

使用方括号设置变量将其设置为允许循环遍历它们的数组。如果您需要变量名称,可以通过在方括号中写入它们来动态传递它们。 EG:

<input type="text" name="variables[variableName-one]" />
<input type="text" name="variables[variableName-two]" />

使用此方法的好处是可以通过在foreach循环中设置键来在代码中使用数组键名(variableName-one etc.)。类似于:

foreach($_POST['variables'] as $variableName => $variable){
         echo $variableName.' was set as '.$variable;
}

否则您可以将其留空,您可以将其作为数字访问,例如:

$_POST['variables'][1]

答案 3 :(得分:1)

我不知道我是否完全理解你的问题

foreach ($_POST as $key=>$value) {
doSomething($key,$value);
}

在$ key中,您找到了输入名称,在$ value中找到了它的值。 当然你不能过分概括。 例如,如果有复选框并且未选中该复选框,则不会在post数组中获取它。

如果你有一些类似数组的输入: 你会把它们作为一个阵列。

foreach ($_POST as $key=>$value) {
  if(is_array($value)){
     foreach($value as $key2=>$value2){
          doSomethingOther($key,$key2,$value2);
     }
  } else {    
     doSomething($key,$value);
  }
}

但是这样你应该为你可以获得的任何输入编写非常具体的代码。 或者你必须找到编纂输入名称的方法,这样他们就会暗示你要对它们做些什么 如果您接受一个用户可以发送给您的所有可能输入,也许您会面临一些劫持风险。