2010-12-15 125 views
0

我正在運行一個循環來刪除舊成員文件,但我在下面得到以下錯誤,我想知道如何糾正它,以便我可以刪除更多那麼一個成員文件?PHP - 致命錯誤:無法重新聲明之前在第4行聲明的delete_directory()

Fatal error: Cannot redeclare delete_directory() previously declared on line 4 

這裏是PHP代碼。

for($x = 0; $x < count($delete_member); $x++){ 

    //delete members files and folders from the server 
    $dirname = './members/' . $delete_member[$x] . '/'; 
    function delete_directory($dirname) { 
     if (is_dir($dirname)) { 
      $dir_handle = opendir($dirname); 
     } 
     if (!$dir_handle) { 
      return false; 
     } 
     while($file = readdir($dir_handle)) { 
      if ($file != "." && $file != "..") { 
      if (!is_dir($dirname."/".$file)) { 
       unlink($dirname."/".$file); 
      } else { 
       delete_directory($dirname.'/'.$file); 
      } 
      } 
     } 
     closedir($dir_handle); 
     rmdir($dirname); 
     return true; 
    } 

    delete_directory($dirname); 
} 

回答

5

從循環中取出delete_directory函數的定義。您只需定義一次即可根據需要多次調用它。

通過您的評論來看,你不熟悉基本的PHP語法,所以我下方會顯示出修正:

function delete_directory($dirname) { 
    if (is_dir($dirname)) { 
     $dir_handle = opendir($dirname); 
    } 
    if (!$dir_handle) { 
     return false; 
    } 
    while($file = readdir($dir_handle)) { 
     if ($file != "." && $file != "..") { 
     if (!is_dir($dirname."/".$file)) { 
      unlink($dirname."/".$file); 
     } else { 
      delete_directory($dirname.'/'.$file); 
     } 
     } 
    } 
    closedir($dir_handle); 
    rmdir($dirname); 
    return true; 
} 

for($x = 0; $x < count($delete_member); $x++){ 
    //delete members files and folders from the server 
    $dirname = './members/' . $delete_member[$x] . '/'; 
    delete_directory($dirname); 
} 

我建議買一個入門PHP的書,讀了一下

+0

原諒我無知有什麼定義? – HELP 2010-12-15 07:47:53

+1

表示'function delete_directory'的行定義了一個名爲'delete_directory'的函數。由於這是在一個循環內,因此您嘗試重複定義函數的次數與循環運行次數相同。正如錯誤所說,你不能這樣做。 – 2010-12-15 07:59:35

相關問題