2010-12-15 129 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

相关问题