0

私はいくつかのerror_log.txtファイルを持っています、で作成します、/var/www/html/log/'.date(Ymd).'/error_log.txtこのようなフォルダテーブル。

-log-
    |--20120825 -- error_log.txt
    |--20120826 -- 
    |--20120827 -- error_log.txt
    |--20120828 -- error_log.txt

foreach loop、という名前のinフォルダーを作成し、logすべてを取得して、これ にあるかどうかsubfolder nameを判断するにはどうすればよいですか?error_log.txtsubfolder

folder tableショーとして、その中にはあり20120826ませerror_log.txtんので、を印刷しないでくださいfolder name

最後に、フォルダ名を取得する必要があります。20120825, 20120827, 20120828

$folder = dirname(__FILE__) . '/../log/';
foreach(glob($folder) as $subfolder){
  if(file_exists($subfolder.'/error_log.txt')){
    echo  $subfolder.'<br />'; //I get nothing.
  }
}
4

3 に答える 3

1
$folder = dirname(__FILE__) . '/../log/';
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder)) as $entry) {
  if ($entry->isFile()) {
    echo $entry, '<br />';
  }
}

このように使用すると、実際のファイルのみを取得できます。また、イテレータスタイルが気に入らない場合は、次を使用してください。

$folder = dirname(__FILE__) . '/log/*';
foreach(glob($folder) as $subfolder){
  $path = $subfolder . '/error_log.txt';
  if (file_exists($path)) {
    echo basename($subfolder), '<br />';
  }
}
于 2012-08-28T13:50:25.683 に答える
1

以下を使用してください

$folder = dirname(__FILE__) . '/../log';


foreach(glob($folder.'/*') as $subfolder){
  if(file_exists($subfolder.'/error_log.txt')){
    echo  $subfolder.'<br />'; //You will get the folder name
}
于 2012-08-28T13:59:30.340 に答える
1

scandirも使用できます

$folder = dirname(__FILE__) . '/../log/';
$files = scandir($dir);
foreach($files as $subfolder){
  if(is_numeric($subfolder)){ // As your folder all use number, use `is_numeric` to remove sub folder '.' and '..'
    if(file_exists($folder.$subfolder.'/error_log.txt')){
      echo  $subfolder.'<br />';
    }
  }
}
于 2012-09-22T15:29:48.847 に答える