2015-10-16 2 views
1

У меня есть следующий скрипт, предназначенный для приема любых файлов определенного типа и возврата массива всех значений. Однако, когда я запускаю скрипт, он не добавляет никаких значений, которые находятся в каталогах внутри папки модуля, если я просто не добавляю последующие массивы.Модуль Reader Не загружается все модули

<?php 

function get_modules($dir,$ftype) { 
    $file = scandir($dir); 

    $result = array(); 

    foreach($file as $key => $value) { 
     if($value == "." || $value == "..") { 
      // Do Nothing 
     } else { 
      if(is_dir($dir . "/" . $value)) { 
       array_merge($result, get_modules($dir . "/" . $value, $ftype)); 
      } else { 
       if(pathinfo($value,PATHINFO_EXTENSION) == $ftype) { 
        array_push($result, $dir . "/" . $value); 
       } else { 
        // Do Nothing 
       } 
      } 
     } 
    } 

    return $result; 
} 

$modules = get_modules("modules","txt"); 

print_r($modules); 

?> 

ответ

2

Почему бы не использовать glob() with some modifications? См

if (! function_exists('glob_recursive')) { 
    // Does not support flag GLOB_BRACE 
    function glob_recursive($pattern, $flags = 0) { 
     $files = glob($pattern, $flags); 
     foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) 
      $files = array_merge($files, glob_recursive($dir.'/'.basename($pattern), $flags)); 
     return $files; 
    } 
} 

function get_modules($ftype) { 
    $result = glob_recursive($ftype); 
    return $result; 
} 

$modules = get_modules("*.txt"); 
print_r($modules); 
+0

это было почти идеально все это было нужно, способом ограничить первый каталог на один вариант, спасибо, я не знал об этой функции – Jdoonan

+0

Рад, что получилось! – Jan

+0

Да, просто небольшая модификация, чтобы удалить «./» и подтвердить каталог модуля, и это безупречно для моих нужд – Jdoonan

Смежные вопросы