4

我想在 $_FILES[] 数组周围添加循环。我试过$count= count($_FILES['files'][name])然后在它周围添加循环 for($i=0; $i<=$count; $i++),但它没有给我想要的输出。

我只想从用户上传的文件中添加循环,现在它正在计算表单中可用的所有“文件”。

请告诉我一种仅计算上传文件并遍历它们的方法。

4

4 回答 4

5

循环$_FILES数组并使用['name']内部迭代:

$count = count($_FILES['files'])
for($i=0; $i<=$count; $i++) {
  if ($_FILES['files'][$i]['size'])
    echo $_FILES['files'][$i]['name']."\n";
}

更简单的是使用 foreach 循环:

foreach($_FILES['files'] as $file) {
  if($file['size'])
    echo $file['name']."\n";
}
于 2013-08-23T11:03:36.983 回答
3

您可以为此使用array_filter。您过滤数组以获取其中包含上传文件的输入。

$uploaded_files = array_filter($_FILES['files'], function($file){ 
    return $file['size']; 
});

print count($uploaded_files);

foreach($uploaded_files as $file)
{
    //code
}
于 2013-08-23T11:03:46.537 回答
2

您可以通过以下方式循环文件:

$count = count($_FILES['files']['tmp_name']);
for($i=0;$i<$count;$i++) {
    $file_name = $_FILES['files']['name'][$i];
    $file_type = $_FILES['files']['type'][$i];
    $file_error = $_FILES['files']['error'][$i];
    $file_size = $_FILES['files']['size'][$i];
}
于 2013-08-23T11:05:58.820 回答
0

所以我从你的问题中了解到,$_FILES['files']是上传文件的数组,所以你可以把它当作数组。试试foreach

foreach ($_FILES['files'] as $file){
    // now do something with $file
    move_uploaded_file($file["tmp_name"],"upload/" . $file["name"]);//e.g uploading it
}
于 2013-08-23T11:09:38.550 回答