2016-12-31 3 views
-1

У меня проблема с моим кодом, с которым я боролся. Я просто не могу понять, что вызывает эту ошибку.array_keys() ожидает, что параметр 1 будет массивом, значение null задано

Итак, я сделал форму загрузки в своей CMS. Если я загружу 9 фотографий, он отлично работает. Если я загружу более 9 файлов, это даст мне эту ошибку:

array_keys() expects parameter 1 to be array, null given in C:...upload.php on line 18 

Может кто-нибудь помочь мне?

Код:

$file_ary = reArrayFiles($_FILES['ufile']); 
    //Reorganising the $_FILES: 

    function reArrayFiles(&$file_post) { 

     $file_ary = array(); 
     $file_count = count($file_post['name']); 
     $file_keys = array_keys($file_post); 

     for ($i=0; $i<$file_count; $i++) { 
      foreach ($file_keys as $key) { 
       $file_ary[$i][$key] = $file_post[$key][$i]; 
      } 
     } 

     return $file_ary; 
    } 


    foreach ($file_ary as $file) { 
     $dir = "imgs/" . $last_fotoid . "/"; 

     if (!file_exists($dir)) { 
     mkdir("imgs/" . $last_fotoid . "/"); 
     } 


     $target_file = $dir . basename($file["name"]); 

     move_uploaded_file($file["tmp_name"], $target_file); 

} 

Моя форма:

<form method="post" action="upload.php" enctype="multipart/form-data"> 
      Select image to upload:<br> 
      <input type="file" name="ufile[]" multiple> 
      <input type="submit" value="Upload Image" name="submit"> 
</form> 
+1

код, который вы скопировали, не очень помогает. Но в основном вам нужно убедиться, что при вызове метода ** reArrayFiles ** вы передаете массив – Ali

+0

$ _FILES ['ufile'] - это массив, поэтому он должен работать – laurensvanheerde

+0

ну, не всегда, только при отправке формы. невозможно сказать, глядя на код, который вы опубликовали. – Ali

ответ

0

ошибка ясно указывает на $file_keys = array_keys($file_post); так вызывающе есть случай, когда вы звоните reArrayFiles() метод, но с пустым аргументом вместо ожидаемого массива (файлов в этом случае). вы можете подтвердить это, проверив значение $_FILES['ufile'] перед тем, как передать его вашему методу.

Это происходит, когда вы посещаете страницу с формой? или это происходит только при отправке формы? Не видя полного кода, сложно быть% 100, но я думаю, что вы забыли выполнить свой код только в том случае, если это сообщение POST в результате отправки формы.

В основном убедитесь, что вы запускаете процесс только тогда, когда вы получили ожидаемые файлы.

+0

Этот код отлично работает, когда я загружаю 9 файлов. Кроме того, я получаю сообщения об ошибках. Файлы также не загружаются. – laurensvanheerde

+0

Я просто поставил демо и дал ему попробовать, и смог воспроизвести ту же ошибку. Но не из-за количества файлов, а из-за сбоя процесса загрузки, включая большой файл – Ali