我正在编写一个基于上传的CSV文件写出表单的脚本。 CSV文件包含由仅包含',,,,'的行分隔的部分。每个块包含有关将要启动的服务器的信息。它看起来像这样:
host,tctivt2r6ra03,,, int,eth0,10.153.196.248,255.255.255.0,10.153.196.1 int,eth1,10.153.157.113,255.255.255.128,10.153.157.1 int,eth2,10.153.157.241,255.255.255.128,10.153.157.129 int,eth3,00:50:56:ac:69:cb,, part,/home,10,, part,swap,10,, part,/opt,60,, part,/data,30,, ,,,,
此输入被写入包含表格的div。每行输入都是表中的唯一行。某些值最终出现在文本框中。
该脚本生成的输出看起来像this。
每个框都是动态生成的,包含从0开始的主机ID和从0开始的框号。例如:
<tr><th>eth0: </th><td><input type="text" value="10.153.196.248" name="host0Box0" /></td><td><input type="text" value="255.255.255.0" name="host0Box1" /></td><td><input type="text" value="10.153.196.1" name="host0Box2" /></td></tr><tr>
我遇到的问题是如何处理具有可变数量框的表单。具体来说,当处理输入的“部分”行时,可以有六个或更多的框。
有四个分区的示例:
<tr><th>Partition name:</th><td> /</td><td>10</td></tr>
<tr><th>Partition name:</th><td> /var</td><td><input type="text" value="10" name="host0Box9" /></td></tr>
<tr><th>Partition name:</th><td> /home</td><td><input type="text" value="10" name="host0Box10" /></td></tr>
<tr><th>Partition name:</th><td> swap</td><td><input type="text" value="10" name="host0Box11" /></td></tr>
<tr><th>Partition name:</th><td> /opt</td><td><input type="text" value="60" name="host0Box12" /></td></tr>
<tr><th>Partition name:</th><td><input type="text" value="/data" name="host0Box13" />/td><td><input type="text" value="30" name="host0Box14" /></td></tr>
<tr><th>Number of Disks: </th><td><input type="text" value="1" name="host0Disks" /></td></tr></table></div><span><br /><br /></span>
六个分区的示例:
<tr><th>Partition name:</th><td> /</td><td>10</td></tr>
<tr><th>Partition name:</th><td> /var</td><td><input type="text" value="10" name="host1Box9" /></td></tr>
<tr><th>Partition name:</th><td> /home</td><td><input type="text" value="10" name="host1Box10" /></td></tr>
<tr><th>Partition name:</th><td> swap</td><td><input type="text" value="10" name="host1Box11" /></td></tr>
<tr><th>Partition name:</th><td> /opt</td><td><input type="text" value="60" name="host1Box12" /></td></tr>
<tr><th>Partition name:</th><td><input type="text" value="/data" name="host1Box13" /></td><td><input type="text" value="30" name="host1Box14" /></td></tr>
<tr><th>Partition name:</th><td><input type="text" value="/test1" name="host1Box15" /></td><td><input type="text" value="30" name="host1Box16" /></td></tr>
<tr><th>Partition name:</th><td><input type="text" value="/test2" name="host1Box17" /></td><td><input type="text" value="20" name="host1Box18" /></td></tr>
<tr><th>Number of Disks: </th><td><input type="text" value="1" name="host0Disks" /></td></tr></table></div><span><br /><br /></span>
这是一项正在进行的工作,我知道为了正确处理每个主机部分,我将不得不进行更改。与此同时,我正试图解决这个问题。
我现在的问题是,当我最终到达处理表单时,在填充$ _POST数组时,我应该使用什么方法来考虑动态分配的项目名称?我是否将数组值拉出并将它们放在不同的数组中?我可以像普通数组一样遍历$ _POST数组吗?还有其他我不知道的选择吗?
答案 0 :(得分:2)
看起来你在this?
之后假设您可以更改脚本输出,而不是name="host0Box0"
使用name="host[0][Box][]
。
使用[]
会自动填写一个数组,例如
<input type="text" name="foo[]" value="Hello" />
<input type="text" name="foo[]" value="World" />
会给你数组
Array(
[foo] => Array(
[0] => Hello
[1] => World
)
)
我可能误解了这个问题。
答案 1 :(得分:0)
您可以像任何数组一样迭代超全局$ _POST数组。尝试var_dump($ _ POST)来查看可用的内容。
由于发布的名称未知,如果这些名称包含unusual characters,您可能需要解析原始输入流。 Accepted answer to Question 813487可能会有所帮助。