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


Populate the value of an input field with $_FILES['field']['name'];

我需要在数组中检索上传输入字段的值,让我解释一下:

我有这些输入字段:

<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' />

我从这些字段中print_r字段数组,并得到:

Array
(
    [0] => title 1
    [2] => title 2
)

代替:

Array
(
    [0] => title 1
    [1] => image1.jpg
    [2] => title 2
    [3] => image2.jpg
)

我需要在我的数组中有我的文件名,我怎么能有第二个数组?

我尝试过合并,但我需要保留数组中每个字段的位置,就像在表单中每个输入的顺序一样(例如:如果上传字段生成在表单的第一个位置,我需要将该信息保存在数组中([0]=> image1.jpg [1] => title1等)

任何帮助都会非常非常感激!!我已经被困了几天了

如果您给输入相同的名称,它们将在提交时简单地相互覆盖。现在你所有的输入都命名为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' />

只需给它们单独命名,然后在循环遍历$_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>");
}

我猜你已经尝试过array_merge Docs,如果它们是数字,它将改变键。相反,您可以使用数组联合运算符+ Docs,它可以很好地处理编号键,并且不会更改它们:

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

这将得到你正在寻找的东西。演示。