1

$valuecan=言語ファイルへのフォルダ構造。例:languages / 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そして、ループ内のforeachループには時間がかかる可能性があり、これをできるだけ速くする必要があるため、whileループを使用せずにこれを実行できるかどうか疑問に思います。

また、参考までに、$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 に答える