如何解决为foreach()php提供的无效参数?
问题描述:
我试图应用一些现有的样本在这里找到在stackoverflow但这个问题似乎没有解决。如何解决为foreach()php提供的无效参数?
$valid_formats = array("jpg", "png", "gif", "zip", "bmp");
$max_file_size = 1024*1000;
$path = "upload/";
$count = 0;
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){
foreach ($_FILES['files']['name'] as $f => $name) {
if ($_FILES['files']['error'][$f] == 4) {
continue; // Skip file if any error found}
if ($_FILES['files']['error'][$f] == 0) {
if ($_FILES['files']['size'][$f] > $max_file_size) {
$message[] = "$name is too large!.";
continue; // Skip large files
}
elseif(! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)) {
$message[] = "$name is not a valid format";
...
答
正如urfusion所说,$ _FILES ['files'] ['name']是一个字符串,而不是一个数组。
,你可以做遍历文件提交的所有文件名是类似的东西:
if(is_array($_FILES['files']) && !empty($_FILES['files'])){ // if1
foreach($_FILES['files'] as $file_index=>$file_value){
if($file_index==='name'){ // if2
echo $file_value; // or do something with that name
} // end if2
} // end foreach
} // end if1
'$ _FILES [“文件”] [“名”]'是不是数组。这就是为什么你得到这个错误 – urfusion
正确解释你的问题。你有什么尝试?什么是问题? – Ironic
$ _FILES ['files'] ['name']将此代码替换为$ _FILES ['files']。 (我想如果你提交多个文件的形式) –