Вывести файлы в директории по алфавиту?

Тема в разделе "PHP", создана пользователем dandandan, 18 фев 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    996
    Симпатии:
    268
    Есть скрипт, который обходит одну директорию и выводит названия файлов в ней. Однако заметил, что файлы при выводе располагаются не по алфавиту. Можно ли как-нибудь простым спосбом сделать обход по алфавиту?
    Сложным как я предполагаю - сохранить инфу в массив, затем сортировка и вывод. Может есть проще.

    Код:
    function get_files_from_dir($dir){
    	if ($handle = opendir($dir)) { 
    		while (false !== ($file = readdir($handle))) { 
    			if ($file != "." && $file != "..") { 
    				if (is_file($dir.'/'.$file)){
    					echo $dir.'/'.$file;
    					}
    				} 
    			} 
    		closedir($handle); 
    		}
    	}
    
     
  2. uNknownMark

    uNknownMark

    Регистр.:
    22 сен 2007
    Сообщения:
    393
    Симпатии:
    169
    Вот функция которая выводит файлы из папки в массив (упрощенный вариант).
    PHP:
    function GetFileNamesInFolders($pathStart, &$arNames) {
        
    $d dir($pathStart);
        if (!
    is_object($d)) return;

        while(
    $entry $d->read()) {
            if (
    $entry != '.' && $entry != '..') {
                if (@
    is_dir($pathStart.'/'.$entry)) {
                    
    GetFileNamesInFolders($pathStart.'/'.$entry$arNames);
                } else {
                    
    $fn $pathStart.'/'.$entry;
                    
    $arNames[] = $fn;

                }
            }
        }
        
    $d->close();
    }
    А дальше применяешь к массиву функцию сортировки sort
    Это самый простой вариант.
     
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    996
    Симпатии:
    268
    Так я в первом посте и предлагал то же самое делать. В вашей функции используется еще какой-то класс, который я не знаю где взять.

    $d->read() к примеру.

    Может надо какой-нибудь пораметр запихнуть в функцию обхода, чтобы сразу по алфавиту обходил файлы?
     
  4. Alternator

    Alternator

    Регистр.:
    23 мар 2009
    Сообщения:
    295
    Симпатии:
    145
    scandir() же
    он сразу возвращает массив уже отсортированный
    на базе вашего скрипта(то есть без создания массива, хоть и автоматического) сделать не выйдет
     
    dandandan нравится это.
  5. bliss

    bliss Постоялец

    Регистр.:
    29 июн 2008
    Сообщения:
    72
    Симпатии:
    8
    это не класс, так работает функция dir().
    так что функция полностью рабочая.
    PHP:
    $files = array();
    GetFileNamesInFolders(dirname(__FILE__), $files);
    natsort($files);
    print_r($files);
     
    dandandan нравится это.
Статус темы:
Закрыта.