使用$ _FILES ['field'] ['name']填充输入字段的值;

时间:2011-10-13 22:47:22

标签: php jquery arrays input upload

我需要在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等等)

任何有帮助的人都会非常感激!!我几天就被困在那里:(

3 个答案:

答案 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_mergeDocs,如果它们是数字的话会更改密钥。相反,您可以使用适用于数字键的array union operator +Docs并且不会更改它们:

$field = 'field';
$fields = $_POST[$field] + $_FILES[$field]['name'];
ksort($fields);

这将为您提供所需的信息。 Demo