如何设置一个系统,该系统读取来自具有用户决定输入数量的表单的$ _POST数据?我可以使用$ _POST [1]之类的索引或类似的东西吗? (例如,创建/删除页面,提交更改并处理用户决定他们想要的页数的输入)
答案 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);
}
}
但是这样你应该为你可以获得的任何输入编写非常具体的代码。 或者你必须找到编纂输入名称的方法,这样他们就会暗示你要对它们做些什么 如果您接受一个用户可以发送给您的所有可能输入,也许您会面临一些劫持风险。