我有一些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
如何在名为log
的文件夹中创建一个foreach loop
,然后获取所有的subfolder name
,并判断该subfolder
中是否有error_log.txt
?
如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.
}
}
$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 />';
}
}
使用以下
$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
}
也可以使用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 />';
}
}
}