请考虑以下目录结构:
- artists
- Ben-Major
- Album 1
- Song-1.mp3
- album-art.jpg
- Album 2
- Song-1.mp3
- album-art.jpg
如您所见,Ben-Major
艺术家的目录包含两个子目录 (Album 1
和Album 2
),其中依次包含一个 MP3 文件和一个 JPG 文件。MP3 文件的名称无关紧要,但 JPG 文件的名称,无论它出现在哪个子目录中,都将始终命名为album-art.jpg
.
album-art.jpg
对于给定的艺术家,如何使用 PHP 中最有效的方法提取随机文件?
问题是某些 Artist 目录可能根本不包含调用的文件album-art.jpg
。我首先想到的是使用readdir()
,然后遍历子目录并使用glob()
来查找文件。但是,我认为当我们有几张专辑时,这几乎是低效的(某些艺术家可能会有 10 多张专辑)。
有没有办法以glob()
递归方式使用?这是我要实现的伪代码:
function getRandomAlbumArt($artist)
{
$matchedFiles = getFilesInSubDirs('album-art.jpg');
// ^^ This would loop over the subdirectories in the most efficient manner, returning
// an array of all matched files, including their directory path.
$index = rand(0, count($matchedFiles) - 1);
return $matchedFiles[$index];
// ^^ return 1 of the matches at random
}