2016-01-13 125 views
-5

我试图应用一些现有的样本在这里找到在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"; 
     ... 
+6

'$ _FILES [“文件”] [“名”]'是不是数组。这就是为什么你得到这个错误 – urfusion

+0

正确解释你的问题。你有什么尝试?什么是问题? – Ironic

+0

$ _FILES ['files'] ['name']将此代码替换为$ _FILES ['files']。 (我想如果你提交多个文件的形式) –

回答

0

正如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 
相关问题