【问题标题】:How to loop through $_FILES?如何遍历 $_FILES?
【发布时间】:2013-08-23 10:56:03
【问题描述】:

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

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

请告诉我一种只计算上传文件并循环播放它们的方法。

【问题讨论】:

标签: php html file


【解决方案1】:

循环$_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";
}

【讨论】:

【解决方案2】:

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

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

print count($uploaded_files);

foreach($uploaded_files as $file)
{
    //code
}

【讨论】:

  • 我可以用它来过滤空文件吗?对于多个上传文件数据
【解决方案3】:

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

$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];
}

【讨论】:

    【解决方案4】:

    所以我从你的问题中了解到,$_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
    }
    

    【讨论】:

    • 这将从表单中的所有可用文件循环。我只想从用户选择的文件中循环。
    猜你喜欢
    • 2011-07-23
    • 2011-04-09
    • 2010-12-18
    • 2017-01-10
    • 2011-12-21
    • 2012-02-27
    • 2016-11-23
    • 2017-03-20
    • 1970-01-01
    相关资源
    最近更新 更多