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

Ada*_* L. 1 php

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

任何帮助将非常感谢.

非常感谢,

亚当

scy*_*scy 5

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

<input type="text" name="df[1]" />
<input type="text" name="df[2]" />
Run Code Online (Sandbox Code Playgroud)

然后它们将以数组形式提供(例如,取决于您的提交方法):

foreach ($_GET['df'] as $num => $val) {
    …
}
Run Code Online (Sandbox Code Playgroud)

如果索引不在表单名称之外,PHP将自动为它们编制索引,就像分配给数组一样.

<input name="df[]" />
<input name="df[]" />
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式创建多维数组:

<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] -->
Run Code Online (Sandbox Code Playgroud)

请注意,每个[]都会导致生成的索引递增.这意味着除了最后一个索引之外,它对多维数组并不十分有用.例如,假设您希望每个人$_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'] -->
Run Code Online (Sandbox Code Playgroud)

相反,你需要:

<label>Foo</label><input name="df[0][foo]" />
<label>Bar</label><input name="df[0][bar]" />
Run Code Online (Sandbox Code Playgroud)