Используя этот путь, после завершения цикла DirectoryIterator
вы получите список имен файлов, и позже вы сможете отсортировать его в алфавитном порядке,
так что вы можете обрабатывать каждый файл с именем файла из этого списка - в алфавитном порядке...
Теперь, что, если после завершения цикла DirectoryIterator,
вам нужен массив (в алфавитном порядке отсортированный по имени файла), который содержит не только имя файла,
но также и все другие свойства файла, такие как:
Проблема здесь в том, что вы не можете сортировать до завершения цикла DirectoryIterator,
и после этого вы не сможете получить доступ к чему-либо, кроме имени файла из вашего списка...
Объекты DirectoryIterator предоставляют простой способ доступа ко многим свойствам файла.
$dir = new DirectoryIterator($path);
foreach ($dir as $fileInfo) {
if ((!$fileInfo->isDot())&&($fileInfo->GetExtension() == "txt")) {
/* You can access the file information inside this cycle */
$octal_perms = substr(sprintf('%o', $fileInfo->getPerms()), -4);
echo $fileInfo->getFilename() . " " . $octal_perms . "\n";
}
}
Если нам нужны объекты fileInfo после завершения цикла DirectoryIterator,
нам придется клонировать (копировать) все эти объекты DirectoryIterator в новый массив,
а затем отсортировать этот массив по алфавиту по атрибуту filename объектов DirectoryIterator.
function cmp($a, $b)
{
return strcmp($a->getFilename(), $b->getFilename());
}
$dir = new DirectoryIterator($path);
foreach ($dir as $fileInfo) {
if ((!$fileInfo->isDot())&&($fileInfo->GetExtension() == "txt")) {
/* we need to clone a fileInfo object into array, not just assign it */
$allFilesInfo[] = clone $fileInfo;
}
}
/* Alphabetically sorting the array with DirectoryIterator objects, by filename */
usort($allFilesInfo, 'cmp');
foreach ($allFilesInfo as $fileInfo) {
/* Everything is alphabetical here ;) */
$octal_perms = substr(sprintf('%o', $fileInfo->getPerms()), -4);
echo $fileInfo->getFilename() . " " . $octal_perms . "\n";
}
^^ В этом последнем цикле вы можете работать с вашими файлами в алфавитном порядке,
имея возможность получить доступ ко всем своим свойствам :)
ПРИМЕЧАНИЕ: в случае сбоя, вызванного ошибкой "слишком много открытых файлов",
увеличьте максимальный предел открытых файловых дескрипторов за процесс в вашей ОС.
Связанные файлы конфигурации зависят от вашей ОС, и обычно они хранятся в /etc