2012年1月13日金曜日

再帰的ディレクトリ配下のファイル一覧をリストアップ

再帰的ディレクトリ配下のファイル一覧をリストアップ、サブフォルダも含むが、出力はフラットのファイル一覧のハッシュ配列
キーはファイルの最後更新時間、値はファイル名。
注意、更新時間全く一緒のファイルが存在したら、
ファイル名は常に上書きされて、最後のファイルのみ残す形になる!

$dir = "/test";  
$fs = lastestFiles($dir, true);
print_r($fs);

function lastestFiles($dir,$init = false)
{
    $root = scandir($dir);
    static $result = array(); //staticで宣言すること
    if($init){
      $result = array(); //外部から呼ばれた時はstatic変数を初期化する
    }
    foreach($root as $value)
    {
        if($value === '.' || $value === '..') //これはスキップ
        {
          continue;
        }
        if(is_file("$dir/$value")) //ファイルならstaticハッシュに入れる
        {
          $result[filemtime("$dir/$value")]=$value;
          continue;
        }
        lastestFiles("$dir/$value"); //サブフォルダなら再帰する
    }   
    return $result;   
}

0 件のコメント:

コメントを投稿