PHP サブフォルダ内のファイルを纏めて取得する
PHP サブフォルダ内のファイルをまとめて取得する。
ファイルの取得
以下の2つを使用します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| <?php
use FilesystemIterator;
use RecursiveDirectoryIterator;
use RecursiveIteratorIterator;
function listFiles($dir){
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator(
$dir,
FilesystemIterator::SKIP_DOTS
| FilesystemIterator::KEY_AS_PATHNAME
| FilesystemIterator::CURRENT_AS_FILEINFO
), RecursiveIteratorIterator::LEAVES_ONLY
);
$list = [];
foreach($iterator as $pathname => $info){
$list[] = $pathname;
}
return $list;
}
//検索するディレクトリ
$dir = __DIR__;
var_dump(listFiles($dir));
|
実行結果
1
2
3
4
5
6
7
8
9
10
| array(4) {
[0]=>
string(9) "/hoge.txt"
[1]=>
string(14) "/hoge/hoge.txt"
[2]=>
string(9) "/piyo.txt"
[3]=>
string(14) "/piyo/piyo.txt"
}
|
FilesystemIterator::SKIP_DOTS
は .
, ..
をスキップします。FilesystemIterator::KEY_AS_PATHNAME
で 配列の key
にパス名が入るようになります。FilesystemIterator::CURRENT_AS_FILEINFO
を設定すると $info
に SplFileInfoが入ります。
そうすると $info->getATime()
を行うとファイルの最終アクセス時刻を取得することなど出来ます。