如何循环动态表单输入并插入到数组中

时间:2010-08-11 14:45:45

标签: php

我有一个表单,要求用户在多个表单字段中输入数字。他们可以选择他们想要的表单字段数。我已将表单字段标记为df1,df2,df3等。对于每个额外的表单字段,用户添加它将简单地加1到df之后的数字。我试图捕获(使用PHP)这些字段并将它们放在一个数组中的问题。使问题复杂化的是,用户可能无法填写字段,例如df2或df15。我正在寻找一种方法来排序启动df1的帖子表单字段,但删除任何空白的字段。然后,将它们的值(数字)插入到数组中。不幸的是,我对如何筛选出NULL的已发布表单字段感到困惑。我一直在尝试遍历字段并在df之后增加数字但没有成功。

非常感谢任何帮助。

非常感谢,

亚当

1 个答案:

答案 0 :(得分:5)

请注意,您还可以为表单字段指定索引名称:

<input type="text" name="df[1]" />
<input type="text" name="df[2]" />

例如,它们将在array中提供(取决于您提交的方法):

foreach ($_GET['df'] as $num => $val) {
    …
}

如果索引不在表单名称之外,PHP会自动为它们编制索引,就像assigning to an array时一样。

<input name="df[]" />
<input name="df[]" />

您可以这样创建多维数组:

<label>Foo</label><input name="df[foo][]" /> <!-- $_REQUEST['df']['foo'][0] -->
<label>Bar</label><input name="df[bar][]" /> <!-- $_REQUEST['df']['bar'][0] -->

<label>Foo</label><input name="df[foo][]" /> <!-- $_REQUEST['df']['foo'][1] -->
<label>Bar</label><input name="df[bar][]" /> <!-- $_REQUEST['df']['bar'][1] -->

请注意,每个[]都会导致生成的索引递增。这意味着除了最后一个索引之外,它对多维数组并不十分有用。例如,假设您希望每个$_REQUEST['df']持有array('foo'=>..., 'bar'=>...)。以下方法无效:

<label>Foo</label><input name="df[][foo]" /> <!-- $_REQUEST['df'][0]['foo'] -->
<label>Bar</label><input name="df[][bar]" /> <!-- $_REQUEST['df'][1]['bar'] -->

相反,你需要:

<label>Foo</label><input name="df[0][foo]" />
<label>Bar</label><input name="df[0][bar]" />