PHP Iterator 100 本ノック RecursiveIteratorIterator + RecursiveDirectoryIterator
https://www.php.net/manual/ja/class.recursivedirectoryiterator.php
https://www.php.net/manual/ja/class.recursiveiteratoriterator.php
これを使えば指定したディレクトリ以下のファイルを再帰的にすべて取得してフラットに操作できる
code:php
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dirPath));
これだけ.
こうすると1回の foreach ですべてのファイルが取得できる.
SKIP_DOTS とか KEY_AS_FILENAME とか,いろんなフラグがあってインスタンス作るときに渡せたりする.
FilesystemIterator::CURRENT_AS_FILEINFO を渡すと SplFileInfo (https://www.php.net/manual/ja/class.splfileinfo.php) で返してくれるので, path とか filename とか色々取得できて便利.