Я пытаюсь рекурсивно сканировать структуру папки и заполнять массив с помощью путей к каждому найденному файлу. Однако print_r($fileArray)
дает мне пустой массив в качестве вывода? Пример: Array ()
foreach не заполняет массив
Где ошибка?
function getFilePaths($path){
$structureArray = [];
$fileArray = [];
foreach(new DirectoryIterator($path) as $item){
if($item->isDir()){
if(!$item->isDot()) {
$structureArray[$item->getFilename()] = getFilePaths($item->getPathname());
}
continue;
}
$fileArray[] = '"'. $item->getPathname() .'"';
}
return $fileArray;
}
Обновление
выход var_dump ($ пункт); внутри Еогеасп:
object(DirectoryIterator)#9 (4) { ["pathName":"SplFileInfo":private]=> string(68) "music\sorted\3 Doors Down\Seventeen Days\01 Right Where I Belong.mp3" ["fileName":"SplFileInfo":private]=> string(27) "01 Right Where I Belong.mp3" ["glob":"DirectoryIterator":private]=> bool(false) ["subPathName":"RecursiveDirectoryIterator":private]=> string(0) "" } object(DirectoryIterator)#9 (4) { ["pathName":"SplFileInfo":private]=> string(59) "music\sorted\3 Doors Down\Seventeen Days\02 It's Not Me.mp3" ["fileName":"SplFileInfo":private]=> string(18) "02 It's Not Me.mp3" ["glob":"DirectoryIterator":private]=> bool(false) ["subPathName":"RecursiveDirectoryIterator":private]=> string(0) "" } object(DirectoryIterator)#9 (4) { ["pathName":"SplFileInfo":private]=> string(58) "music\sorted\3 Doors Down\Seventeen Days\AlbumArtSmall.jpg" ["fileName":"SplFileInfo":private]=> string(17) "AlbumArtSmall.jpg" ["glob":"DirectoryIterator":private]=> bool(false) ["subPathName":"RecursiveDirectoryIterator":private]=> string(0) "" } object(DirectoryIterator)#9 (4) { ["pathName":"SplFileInfo":private]=> string(51) "music\sorted\3 Doors Down\Seventeen Days\Folder.jpg" ["fileName":"SplFileInfo":private]=> string(10) "Folder.jpg" ["glob":"DirectoryIterator":private]=> bool(false) ["subPathName":"RecursiveDirectoryIterator":private]=> string(0) "" } object(DirectoryIterator)#9 (4) { ["pathName":"SplFileInfo":private]=> string(59) "music\sorted\3 Doors Down\The Better Life\01 Kryptonite.mp3" ["fileName":"SplFileInfo":private]=> string(17) "01 Kryptonite.mp3" ["glob":"DirectoryIterator":private]=> bool(false) ["subPathName":"RecursiveDirectoryIterator":private]=> string(0) "" } object(DirectoryIterator)#9 (4) { ["pathName":"SplFileInfo":private]=> string(54) "music\sorted\3 Doors Down\The Better Life\02 Loser.mp3" ["fileName":"SplFileInfo":private]=> string(12) "02 Loser.mp3" ["glob":"DirectoryIterator":private]=> bool(false) ["subPathName":"RecursiveDirectoryIterator":private]=> string(0) "" } object(DirectoryIterator)#9 (4) { ["pathName":"SplFileInfo":private]=> string(59) "music\sorted\3 Doors Down\The Better Life\AlbumArtSmall.jpg" ["fileName":"SplFileInfo":private]=> string(17) "AlbumArtSmall.jpg" ["glob":"DirectoryIterator":private]=> bool(false) ["subPathName":"RecursiveDirectoryIterator":private]=> string(0) "" } object(DirectoryIterator)#9 (4) { ["pathName":"SplFileInfo":private]=> string(52) "music\sorted\3 Doors Down\The Better Life\Folder.jpg" ["fileName":"SplFileInfo":private]=> string(10) "Folder.jpg" ["glob":"DirectoryIterator":private]=> bool(false) ["subPathName":"RecursiveDirectoryIterator":private]=> string(0) "" } object(DirectoryIterator)#5 (4) { ["pathName":"SplFileInfo":private]=> string(55) "music\unsorted\01 Club Rocker (Mike Candys Radio Ed.mp3" ["fileName":"SplFileInfo":private]=> string(40) "01 Club Rocker (Mike Candys Radio Ed.mp3" ["glob":"DirectoryIterator":private]=> bool(false) ["subPathName":"RecursiveDirectoryIterator":private]=> string(0) "" } object(DirectoryIterator)#7 (4) { ["pathName":"SplFileInfo":private]=> string(69) "music\unsorted\tagged\257ers - Bis dahin bin ich tot ft. Favorite.mp3" ["fileName":"SplFileInfo":private]=> string(47) "257ers - Bis dahin bin ich tot ft. Favorite.mp3" ["glob":"DirectoryIterator":private]=> bool(false) ["subPathName":"RecursiveDirectoryIterator":private]=> string(0) "" } object(DirectoryIterator)#7 (4) { ["pathName":"SplFileInfo":private]=> string(62) "music\unsorted\tagged\257ers - Seite an Seite ft. Favorite.mp3" ["fileName":"SplFileInfo":private]=> string(40) "257ers - Seite an Seite ft. Favorite.mp3" ["glob":"DirectoryIterator":private]=> bool(false) ["subPathName":"RecursiveDirectoryIterator":private]=> string(0) "" }
Сделайте некоторые отладки внутри вашего foreach. – Jessica
Каков результат 'var_dump ($ item);' внутри 'foreach'? – vitozev
'$ fileArray' будет пустым, если вы всегда попадаете в оператор' continue'. Как отмечает @Jessica, потребуется немного отладки. Кроме того, в чем смысл '$ structureArray', если вы не используете его и не возвращаете его вызывающему? – YvesLeBorg