我有一些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
的文件夹中创建log
,然后获取所有subfolder name
并判断此error_log.txt
中是否有subfolder
}?
在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.
}
}
答案 0 :(得分: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 />';
}
}
答案 1 :(得分: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
}
答案 2 :(得分: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 />';
}
}
}