Список файлов в папке (PHP)

Вступление

В PHP пятой версии есть отличная функция scandir, которая возвращает массив файлов и директорий в определенной директории. В качестве параметра принимает имя директории.

Список файлов и директорий

scandir принимает 2 параметра: string directory — имя директории (обязательный), integer sorting_order — необязательный параметр сортировки (два возможных значения: 0 — в алфавитном порядке по возрастанию; 1 — по убыванию).

<?php $dir = '/tmp'; $files1 = scandir($dir); $files2 = scandir($dir, 1); print_r($files1); print_r($files2); /* Результатом будет нечто вроде: Array ( [0] => . [1] => .. [2] => bar.php [3] => foo.txt [4] => somedir ) Array ( [0] => somedir [1] => foo.txt [2] => bar.php [3] => .. [4] => . ) */ ?>

Улучшаем scandir

Напишем свою функцию myscandir, которая идентична scandir за исключением того, что удаляются . и .., которые, как мне кажется, редко используются.

myscandir

<?php function myscandir($dir, $sort=0) { $list = scandir($dir, $sort); // если директории не существует if (!$list) return false; // удаляем . и .. (я думаю редко кто использует) if ($sort == 0) unset($list[0],$list[1]); else unset($list[count($list)-1], $list[count($list)-1]); return $list; } $dir = '/tmp'; $files1 = myscandir($dir); $files2 = myscandir($dir, 1); print_r($files1); print_r($files2); /* Результатом будет нечто вроде: Array ( [2] => bar.php [3] => foo.txt [4] => somedir ) Array ( [0] => somedir [1] => foo.txt [2] => bar.php ) */ ?>

Примечание

Для работы этой функции нужна 5ятая версия PHP.

Категории

ПрограммированиеPHPФайлы в PHP

Комментарии

Wejur

мне казалось легче использовать array_pop(): или array_shift(); - в зависимости от расположения точек

Ответить