可能重复:
如何循环使用$_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>";
这似乎很冗长,也很荒谬,但我现在的想法是,如何正确地循环通过这个阵列的不同部分,使其工作并以我希望的方式循环。
一定有更好的方法吗?
请帮忙!
如果它们都有相同的长度,你可以这样做
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>";
}
根据您的代码,我假设您的<form>
输入如下所示:
<input type="file" name="attachment[]">
<input type="file" name="attachment[]">
如果您为文件字段指定了唯一的名称,则应获得所需的$_FILES
结构:
<input type="file" name="attachment0">
<input type="file" name="attachment1">
结果如下:
阵列(2){"attachment0"=>数组(5){'name'=>字符串(8)"1528.jpg"'type'=>字符串(0)"'tmp_name'=>字符串(0)"'error'=>int(2)"size"=>int(0)}"attachment1"=>数组(5){'name'=>字符串(8)"1529.jpg"'type'=>字符串(0)"'tmp_name'=>字符串(0)"'error'=>int(2)"size"=>int(0)}}