我需要在Array中检索上传输入字段的值,让我解释一下:
我有这些输入字段:
<input type='text' name='field["+ j++ +"]' value='' data-kind='title' />
<input type='file' name='field["+ j++ +"]' value='' data-kind='image' />
<input type='text' name='field["+ j++ +"]' value='' data-kind='title' />
<input type='file' name='field["+ j++ +"]' value='' data-kind='image' />
我从那些字段中打印出字段数组并得到它:
Array
(
[0] => title 1
[2] => title 2
)
而不是:
Array
(
[0] => title 1
[1] => image1.jpg
[2] => title 2
[3] => image2.jpg
)
我需要在我的数组中包含我的文件名,如何才能拥有第二个数组?
我尝试过合并但我需要保留数组中每个字段的位置,就像表单中每个输入的顺序一样(例如:如果第一个生成上传字段表单的位置我需要将该信息保存在数组中([0] =&gt; image1.jpg [1] =&gt; title1等等)
任何有帮助的人都会非常感激!!我几天就被困在那里:(
答案 0 :(得分:0)
如果您为输入提供相同的名称,他们只会在提交时相互覆盖。现在,您的所有输入都被命名为field["+ j++ +"]
。
听起来你正在生成输入标签,那么为什么不生成一个多维数组来保持你想要的顺序呢?像这样:
<input type='text' name='field["+ j++ +"][0]' value='' data-kind='title' />
<input type='file' name='field["+ j++ +"][1]' value='' data-kind='image' />
<input type='text' name='field["+ j++ +"][2]' value='' data-kind='title' />
<input type='file' name='field["+ j++ +"][3]' value='' data-kind='image' />
答案 1 :(得分:0)
只需给它们单独的名称,然后在循环遍历$ _FILE / $ _ POST元素时引用它们。
<input type='text' name='title[]' value='' data-kind='title' />
<input type='file' name='imgfile[]' value='' data-kind='image' />
<input type='text' name='title[]' value='' data-kind='title' />
<input type='file' name='imgfile[]' value='' data-kind='image' />
然后在你的PHP中
foreach($_FILES['imgfile']['name'] as $key=>$val){
echo($key." = ".$val."<br>");
echo($key." = ".$_POST["title"][$key]."<br><br>");
}
答案 2 :(得分:0)
我猜你已经尝试array_merge
Docs,如果它们是数字的话会更改密钥。相反,您可以使用适用于数字键的array union operator +
Docs并且不会更改它们:
$field = 'field';
$fields = $_POST[$field] + $_FILES[$field]['name'];
ksort($fields);
这将为您提供所需的信息。 Demo