ホームページ  >  記事  >  バックエンド開発  >  ディレクトリトラバーサルの最適化

ディレクトリトラバーサルの最適化

WBOY
WBOYオリジナル
2016-06-20 12:44:431067ブラウズ

ディレクトリとそのディレクトリ内のすべてのファイルを走査するコードを作成しましたが、コードには最適化の余地があると常に感じています。ご協力いただければ幸いです。 5b81b593a74530647899fe30f177b0b5'
$files=search_all_file($dir.'/'.$file); > if (isset($files[0]))
{
echo 'このディレクトリ内のすべてのファイル:'.'0c6dc11e160d3b678d68754cc175188a';
foreach($files as $file)
{
echo ' '.$file;
}

}
search_all_dir($dir.'/'.$file);

}
}
else
{
echo $dir.'正当なディレクトリではないか、強制的に終了します';
}

}

//特定のディレクトリ内のすべてのファイルをスキャンします
function search_all_file($dir)
{
$files=array();
if(is_dir($dir))
{
$handle=opendir($dir);

$piarr=array('.','..');

while($file=readdir($handle))
{
if(in_array($file,$piarr)==FALSE)
{
if(is_dir($dir.'/'.$file)==FALSE)
{
$files[]=' '.$file.'
'

}
}

}
}

; $files;

}




ディスカッションに返信 (解決策) ディレクトリ関数を使用して書き込むだけです。 ディレクトリ イテレータを使用する方が簡単です。

ただし、ディレクトリ イテレータはファイルの作成時間に従ってトラバースするため、結果が次のようになります。奇妙な

私は通常
glob をトラバースするために glob 関数を使用します。結果はファイル名でソートされないように制御できます。別の使用方法で簡単に見つけることができます。指定されたファイル
この方法で、3 層ディレクトリ内のすべての ide_tmp.php ファイルを検索します

  $ite = new RecursiveDirectoryIterator($dir);  $nbfiles=0;  foreach (new RecursiveIteratorIterator($ite) as $filename=>$cur) {    if(is_dir($filename)) continue;    echo $filename . '<br>';  }

辛抱強く回答していただき、ありがとうございます。私の目的は、関数を変更せずにコードを最適化して改善することです。 。ありがとうございます
$r = glob('images/*');for($i=0; $i<count($r); $i++) {  if(is_dir($r[$i])) $r = array_merge($r, glob($r[$i] . '/*'));}print_r($r);

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。