当没有选择文件时,如何使输入类型的文件发送空字符串而不是null

时间:2018-12-21 02:13:27

标签: php arrays file loops input

当选择了文件时,它将发送文件,但是当未选择任何文件时,我希望它发送空字符串或任何空字符串,以便我仍然可以识别它。

我需要这个,当我想用​​文件编辑一些数组数据时,只需说有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']的长度。这样我就可以正确循环。

  

注意:对不起,我的解释不好,希望大家能理解

2 个答案:

答案 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一起设置。最好检查名称是否为空。