【PHP】サブフォルダ内のファイルをまとめて取得する
PHP サブフォルダ内のファイルを纏めて取得する
PHP サブフォルダ内のファイルをまとめて取得する。
ファイルの取得
以下の2つを使用します。
-
RecursiveIteratorIterator - Manual - PHP 再帰的なイテレータの反復処理に使用します。
-
RecursiveDirectoryIterator - Manual - PHP RecursiveDirectoryIterator は、 ファイルシステムのディレクトリを再帰的に反復処理するためのインターフェイスです。
<?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));
実行結果
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()を行うとファイルの最終アクセス時刻を取得することなど出来ます。