1

$valuecan = 语言文件的文件夹结构。示例:语言/english.php

$value也可以=文件名。示例:english.php

因此,仅当该目录中没有其他文件/文件夹时,我才需要获取当前文件夹$value并删除该文件夹(当然,在删除实际文件之后,我已经这样做了)。

foreach($module['languages'] as $lang => $langFile)
{
        foreach ($langFile as $type => $value)
        {
            @unlink($module_path . '/' . $value);
            // Now I need to delete the folder ONLY if there are no other directories inside the folder where it is currently at.
            // And ONLY if there are NO OTHER files within that folder also.
        }
}

我怎样才能做到这一点??并且想知道这是否可以在不使用 while 循环的情况下完成,因为while循环中的foreach循环可能需要一些时间,并且需要尽可能快。

仅供参考,永远不应该删除 $module_path 。所以如果$value = english.php,它永远不应该删除 $module_path。当然,那里总会有另一个文件,因此不需要检查它,但无论如何都不会受到伤害。

多谢你们 :)

编辑

好的,现在我在这里使用此代码,但它不起作用,它没有删除文件夹或文件,而且我也没有收到任何错误......所以不确定问题出在哪里:

foreach($module['languages'] as $lang => $langFile)
{
    foreach ($langFile as $type => $value)
    {
        if (@unlink($module_path . '/' . $value))
            @rmdir(dirname($module_path . '/' . $value));
    }
}

没关系,这很有魅力!!!大家加油!!

4

4 回答 4

5

最简单的方法是尝试使用rmdir. 如果文件夹不为空,则不删除该文件夹

rmdir($module_path);

您也可以通过以下方式检查文件夹是否为空

if(count(glob($module_path.'*'))<3)//delete

2...

UPD:正如我所审查的,也许您应该将 $module_path 替换为 dirname($module_path.'.'.$value);

于 2011-08-16T22:13:25.053 回答
1

$value由于您关心的目录可能dirname$module_path.

$file_path = $module_path . '/' . $value;

if (@unlink($file_path)) {
    @rmdir(dirname($file_path));
}
于 2011-08-16T22:15:19.303 回答
0

下面的代码将采用路径,检查它是否是文件(即不是目录)。如果它是一个文件,它将提取目录名,然后删除该文件,然后遍历该目录并计算其中的文件,如果文件为零,它将删除该目录。

代码作为示例,应该可以工作,但是权限和环境设置可能会导致它无法工作。

<?php

if(!is_dir ( string $filename )){ //if it is a file
    $fileDir = dirname ( $filename );
    if ($handle = opendir($fileDir)) {
        echo "Directory handle: $handle\n";
        echo "Files:\n";
        $numFiles=0;

        //delete the file
        unlink($myFile);

        //Loop the dir and count the file in it
        while (false !== ($file = readdir($handle))) {
            $numFiles = $numFiles + 1;
        }

        if($numFiles == 0) { 
            //delete the dir
            rmdir($fileDir);
        }

        closedir($handle);
    }
}
?>
于 2011-08-16T22:21:44.663 回答
0
if (is_file($value)) { 
  unlink($value); 

} else if (is_dir($value)) {
  if  (count(scandir($value)) == 2) }
     unlink($value)  
  }
}

http://php.net/manual/en/function.is-dir.php

http://www.php.net/manual/en/function.scandir.php

于 2011-08-16T22:17:48.830 回答