我想在$ _FILES []数组中添加循环。我试过$count= count($_FILES['files'][name])
,然后在它周围加上循环for($i=0; $i<=$count; $i++)
,但它没有给我想要的输出。
我想要仅从用户正在上传的文件中加入循环,现在它正在计算表单中可用的所有'文件'。
请告诉我一种方法,只计算上传的文件并循环播放它们。
我想在$ _FILES []数组中添加循环。我试过$count= count($_FILES['files'][name])
,然后在它周围加上循环for($i=0; $i<=$count; $i++)
,但它没有给我想要的输出。
我想要仅从用户正在上传的文件中加入循环,现在它正在计算表单中可用的所有'文件'。
请告诉我一种方法,只计算上传的文件并循环播放它们。
循环有史以来$_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";
}
使用foreach,无论数组的长度是多少,数组中都会得到5个元素。出于这个原因,数组需要按照有序的顺序重新创建。像这里解释的http://php.net/manual/en/features.file-upload.multiple.php – Elnoor
您可以使用array_filter了点。您可以过滤数组以获取上传文件的输入。
$uploaded_files = array_filter($_FILES['files'], function($file){
return $file['size'];
});
print count($uploaded_files);
foreach($uploaded_files as $file)
{
//code
}
我可以用它来过滤掉空的文件吗?对于多个上传文件数据 – danielad
您可以通过以下方式将文件循环:
$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];
}
所以,我从你的问题的理解,$_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
}
这将从表单中可用的所有文件循环。我只想从用户选择的文件中循环。 –
尝试没有'[名]'像'计数($ _ FILES [ '文件'])',而不是'计数($ _ FILES [ '文件'] [名])' – Bora
可能HTTP的重复:// foreachoverflow.com/questions/5444827/how-do-you-loop-through-files-array –