Перебирать папку? - PullRequest
       3

Перебирать папку?

0 голосов
/ 01 февраля 2012

Я ищу лучший способ перебрать папку и поместить все имена файлов внутри нее в массив, а в другом - количество файлов.

Я нашел glob() какхорошее решение, но также есть много альтернатив для него на php.net.Я не уверен, что мне следует использовать, поэтому я спрашиваю здесь.Если вам интересно, что я хочу использовать, это получить все файлы .sql в папке backup, отобразить их как <li>thesqlfile.sql</li> и подсчитать их все тоже.

Так что я подумал о том, чтобы иметь два массива, один с их именами и один с подсчетом всех их.Так что в этом случае какой метод лучше всего подходит для итерации?

Метод I:

<?php
    $files = array();
    foreach (glob("backup/*.txt") as $filename) {
        $files[]= $filename;
    }
    $count = sizeof($files);
?>

Метод II:

function getfoldercontents($dir, $file_display = array(), $exclusions = array()) {
if(!file_exists($dir)){
    return FALSE;
}

$dir_contents = scandir($dir);
$contents = array();

foreach ($dir_contents as $file){
    $file_parts = explode('.', $file);
    $file_type = strtolower(end($file_parts));

    if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) && !in_array($file, $exclusions)) {
        $contents[] = $dir. '/'. $file;                        
    }
}

return $contents; 
}

Ответы [ 2 ]

3 голосов
/ 01 февраля 2012

Так как glob() уже возвращает массив, вам не нужно перебирать его, чтобы вообще добавить в массив.Ваш первый метод немного сложнее.Это выполняет то же самое:

// Just assign the array output of glob() to a variable
$files = glob("backup/*.txt");
$num_files = count($files);
0 голосов
/ 01 февраля 2012

Я бы сказал, что второе, вероятно, лучше с точки зрения управления файлами (через $ file_display и $ file_exclude), но, возможно, вам следует добавить проверку, чтобы убедиться, что текущий файл не является каталогом с именем что-то .typeyouwishtodisplay

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...