PHP - 致命错误:无法重新声明先前在第4行声明的delete_directory()

时间:2010-12-15 07:44:35

标签: php

我正在运行一个循环来删除旧的成员文件,但我在下面收到以下错误,我想知道如何更正它以便我可以删除多个成员文件?

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);
}

1 个答案:

答案 0 :(得分: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书并阅读一下