当选择了文件时,它将发送文件,但是当未选择任何文件时,我希望它发送空字符串或任何空字符串,以便我仍然可以识别它。
我需要这个,当我想用文件编辑一些数组数据时,只需说有2个数据,例如:data 1 => $_POST['name'][$i], $_FILES['file'][$i]
,data 2 => $_POST['name'][$i], $_FILES['file'][$i]
如果所有2个数据都选择了一个新文件,则可以,但是如果仅选择一个文件,只需说它的索引为[1]
。当我执行循环以获取所有数据时,它与$_POST['name']
的长度不匹配,并且我不知道所选文件来自哪个索引。
为什么我需要发送空而不是null,所以$_FILES['file']
的长度可以匹配$_POST['name']
的长度。这样我就可以正确循环。
注意:对不起,我的解释不好,希望大家能理解
答案 0 :(得分:0)
只是在循环时将isset函数放在名称和文件上,因此不会考虑是否为空
if (isset($_POST['name'][$i])){
...
}
if (isset($_FILES['file'][$i])){
...
}
希望有帮助。
答案 1 :(得分:0)
我认为这样做是不好的做法。
如果要这样做,则必须将所有$_FILES['file']
设置为默认值才能创建$_FILES
数组。因此,您可以获得全部5 $_FILES
,并且在循环中您可以识别具有该默认值的空文件。
您可以做的另一件事是,将$_FILES
赋予不同的名称,如下所示,
$_FILES['file1'];
$_FILES['file2'];
...
$_FILES['file5'];
默认为循环
for ($i = 1; $i <= 5; $i++) { ...
获取文件,
$file = $_FILES['file' . $i];
检查空文件状况,
if (!empty($_FILES['file' . $i]['name'])) { ...
我认为这种方式比设置默认值更好。希望对您有所帮助。
编辑:
不要使用isset
,因为它$_FILES
始终与NULL
一起设置。最好检查名称是否为空。