【发布时间】:2015-11-11 05:33:35
【问题描述】:
我一直在尝试对一大堆文件夹进行排序,但无法让多级按我想要的方式工作。
我有一大堆 MP4 文件,分散在一个多级目录结构中,我需要获取一个数组,其中仅包含包含 MP4 文件的文件夹列表。
所以这里是一个文件夹和文件的列表。
/videos/
/videos/2015-11-09/
/videos/2015-11-09/device-1/
/videos/2015-11-09/device-1/110519/
/videos/2015-11-09/device-1/110519/Video-001.MP4
/videos/2015-11-09/device-1/110519/Video-002.MP4
/videos/2015-11-09/device-1/134852/Video-003.MP4
/videos/2015-11-09/device-2/
/videos/2015-11-09/device-2/094516/
/videos/2015-11-09/device-2/094516/Video-001.MP4
/videos/2015-11-09/device-2/094516/Video-002.MP4
/videos/2015-11-10/
/videos/2015-11-10/device-1/
/videos/2015-11-10/device-1/214537/Video-004.MP4
/videos/2015-11-10/device-1/214537/Video-005.MP4
/videos/2015-11-10/device-4/
/videos/2015-11-10/device-4/Video02-001.MP4
/videos/2015-11-10/device-4/Video02-002.MP4
/videos/2015-11-10/Video01-001.MP4
/videos/2015-11-10/Video01-002.MP4
/videos/2015-11-10/Video01-003.MP4
我想要一个 php 函数来查看这些,使用 scandir()。
我已经构建了一些函数来删除隐藏文件以及结果中除 .MP4 之外的所有其他文件。
$HiddenFileFilter = function($a) {
return $a[0] != ".";
};
$FileFilter = function($a) {
if (strpos($a,'.MP4') !== false) {
return $a;
}
};
$ScandirFilteredResults = array_filter(scandir($Dir), $FileFilter);
我想要的结果是其中包含 .MP4 文件的目录,以及包含 filemtime() 的 MP4 文件对每个文件夹都有好处。
Array (
[/videos/2015-11-09/device-1/110519/] => Array (
[filemtime] => FILE_M_TIME
[MP4] => Array (
[0] => Video-001.MP4
[1] => Video-002.MP4
)
)
[/videos/2015-11-09/device-1/134852/] => Array (
[filemtime] => FILE_M_TIME
[MP4] => Array (
[0] => Video01-003.MP4
)
)
[/videos/2015-11-09/device-2/094516/] => Array (
[filemtime] => FILE_M_TIME
[MP4] => Array (
[0] => Video-001.MP4
[1] => Video-002.MP4
)
)
[/videos/2015-11-10/device-1/214537/] => Array (
[filemtime] => FILE_M_TIME
[MP4] => Array (
[0] => Video01-004.MP4
[1] => Video01-005.MP4
)
)
[/videos/2015-11-10/device-4/] => Array (
[filemtime] => FILE_M_TIME
[MP4] => Array (
[0] => Video02-001.MP4
[1] => Video02-002.MP4
)
)
[/videos/2015-11-09/] => Array (
[filemtime] => FILE_M_TIME
[MP4] => Array (
[0] => Video01-001.MP4
[1] => Video01-002.MP4
[2] => Video01-003.MP4
)
)
)
我只希望包含 .MP4 文件的文件夹连同其中的 MP4 文件一起出现在输出数组中。
可能有 6 层以下的目录需要列出。所以 /videos/ 中的任何内容。
我已经能够为第三个文件夹中的所有视频构建一个函数来执行此操作,但我不知道如何为多个级别的文件夹执行此操作。
【问题讨论】:
-
创建一个构建数组的递归函数?