2014-10-20 4 views
0

Может кто-нибудь помочь мне? Я не вижу этого. Функция ниже не возвращает массив. print_r($list) (над return) печатает массив на экране. Но print_r($files) возвращает пустой массив ....PHP: Функция не возвращается Array

function listFolderFiles($dir){ 
    $ffs = scandir($dir); 
    $i = 0; 
    $list = array(); 
    foreach ($ffs as $ff){ 
     if ($ff != '.' && $ff != '..'){ 
      if (strlen($ff)>=5) { 
       if (substr($ff, -4) == '.mp4') { 
        $value = $dir.'/'.$ff; 
        $list[] = $value; 
       } 
      } 
      if(is_dir($dir.'/'.$ff)) 
        listFolderFiles($dir.'/'.$ff); 
     } 
    } 

    print_r($list); // Returns the full array with values 
    return $list; 
} 
$files = listFolderFiles($_POST['path']); 
print_r($files) // Returns an empty array..... :(:(
+1

что это ? '($ _POST ('путь'))'? опечатка? '$ _POST ['path']' – Ghost

+0

Моя ошибка, опечатка, когда я разместил вопрос. Было написано прямо в PHP-файле, хотя, так что все еще не работает –

+0

Я замечаю, что $ list возвращает два раза массив ..... Один заполненный и один пустой. Может быть, он слишком много рубит listFolderFiles? –

ответ

3

Ваш вызов рекурсии не обрабатывает возвращаемый массив:

listFolderFiles($dir.'/'.$ff); 

Вам нужно объединить массив здесь:

$list = array_merge($list, listFolderFiles($dir.'/'.$ff)); 
+0

Он все еще не работает :(Как-то он все еще возвращает пустой массив ... –

+0

@ErikVandeVen Я обновил ответ, попробую вот так: –

+0

Спасибо! –