我需要在数组中检索上传输入字段的值,让我解释一下:
我有这些输入字段:
<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);
这将得到你正在寻找的东西。演示。