我有一个表格,其中的 input type="file"
和 textarea
输入和这些输入的顺序是可变的;它们被动态地添加到一个表单中。这些输入的值会被保存到mysql数据库中。method="POST"
.
我给了输入相同的数组名称,就像这样 name="longcopy[]"
希望它能创建一个按外观顺序取值的数组。
举个例子。
<input type="file" name="longcopy[]" accept="image/*">
<textarea name="longcopy[]"></textarea>
<textarea name="longcopy[]"></textarea>
<input type="file" name="longcopy[]" accept="image/*">
<textarea name="longcopy[]"></textarea>
在提交之后,我希望能得到一个这样的数组。
Array
(
[0] => img1.jpg,
[1] => text1,
[2] => text2,
[3] => img2.jpg,
[4] => text3
)
这样数组的值就可以按照正确的顺序保存到数据库里了 不知为什么,它只在textareas上有效......。
有人知道如何解决这个问题吗?
文件可以通过以下方式访问 $_FILES
. 他们不会在 $_POST
喜欢 <textarea/>
值。每一组变量都将被单独索引。
如果你不想保留顺序,你需要明确地定义索引。
<input type="file" name="longcopy[0]" accept="image/*">
<textarea name="longcopy[1]"></textarea>
<textarea name="longcopy[2]"></textarea>
<input type="file" name="longcopy[3]" accept="image/*">
<textarea name="longcopy[4]"></textarea>
然后把 $_FILES
和 $_POST
一起。
$longcopy_files = array_map("save_file_and_return_path", diverse_array($_FILES['longcopy']));
$longcopy = $_POST['longcopy'] + $longcopy_files;
ksort($longcopy);
print_r($longcopy);
结果是:
Array ( [0] => uploads/file_1.jpeg [1] => first textarea [2] => second textarea [3] => uploads/file_2.png [4] => third textarea )
注意: diverse_array
函数来自 此处.