6

可能重复:
你如何遍历 $_FILES 数组?

出于某种原因,数组真的很吸引我。我最终可以到达那里,但是这个 $_FILES 数组对我来说似乎是倒退的。

我希望能够像这样循环 $_FILES:

foreach($_FILES as $file)
{
   echo $file['name'] . "<br>";
   echo $file['type'] . "<br>";
   echo $file['size'] . "<br>";
   echo $file['error'] . "<br>";
}

但显然,以它的结构方式,你不能做到这一点。所以我写了以下内容:

echo "<pre>";
                $x=0;
                $file = array();
                foreach($_FILES['attachment']['name'] as $data)
                {   $file[$x]=array(); 
                    array_push($file[$x],$data); $x++;
                }
                $x=0;
                foreach($_FILES['attachment']['type'] as $data)
                    {   array_push($file[$x],$data); $x++;}

                $x=0;
                foreach($_FILES['attachment']['tmp_name'] as $data)
                    {   array_push($file[$x],$data); $x++;}
                $x=0;
                foreach($_FILES['attachment']['error'] as $data)
                    {   array_push($file[$x],$data); $x++;}
                $x=0;
                foreach($_FILES['attachment']['size'] as $data)
                    {   array_push($file[$x],$data); $x++;}
                var_dump($file);
                echo "</pre>";

这似乎非常冗长和荒谬,但我的想法目前停留在如何正确循环该数组的不同部分以使其工作并按照我想要的方式循环。

一定会有更好的办法?

请帮忙!

4

2 回答 2

6

如果它们都具有相同的长度,您可以这样做

for($i = 0; $i < count($_FILES['attachment']['name']); $i++)
{
   echo $_FILES['attachment']['name'][$i] . "<br>";
   echo $_FILES['attachment']['type'][$i] . "<br>";
   echo $_FILES['attachment']['size'][$i] . "<br>";
   echo $_FILES['attachment']['error'][$i] . "<br>";

}
于 2012-07-27T15:09:57.013 回答
3

从您的代码中,我想您的<form>输入如下所示:

<input type="file" name="attachment[]">
<input type="file" name="attachment[]">

如果您为文件字段提供唯一名称,您应该获得所需的$_FILES结构:

<input type="file" name="attachment0">
<input type="file" name="attachment1">

结果是这样的:

数组(2){
  '附件0' => 数组(5){
    '名称' => 字符串(8)“1528.jpg”
    '类型' => 字符串(0)“”
    'tmp_name' => 字符串(0)“”
    '错误' => int(2)
    '大小' => int(0)
  }
  '附件1' => 数组(5){
    '名称' => 字符串(8)“1529.jpg”
    '类型' => 字符串(0)“”
    'tmp_name' => 字符串(0)“”
    '错误' => int(2)
    '大小' => int(0)
  }
}
于 2012-07-27T15:13:28.343 回答