О проектеГостеваяКарта сайта

Предложишь лучшее решение - получишь 100 рублей!

Получения списка файлов и папок на сервере в виде многомерного массива

Функция позволяет получить список файлов и папок на сервере в виде многомерного массива.

Сайт с 2500 файлов функция "обходит" примерно за 4 секунды.

Решение

PHP

function scandirs($start)
{
   $files = array();
   $handle = opendir($start);
   while (false !== ($file = readdir($handle)))
   {
       if ($file != '.' && $file != '..')
       {
           if (is_dir($start.'/'.$file))
           {
               $dir = scandirs($start.'/'.$file);
               $files[$file] = $dir;
           }
           else
           {
               array_push($files, $file);
           }
       }
   }
   closedir($handle);
   return $files;
}
 
echo '<pre>'; var_export(scandirs(dirname(__FILE__).'/')); echo '</pre>';
 

В результате работы функции в браузере мы увидим нечто подобное:

 

array (
  0 => '.htaccess',
  1 => '1.php',
  2 => '2.php',
  'admin' => 
  array (
    0 => '.htaccess',
    1 => 'backups.class.php',
    2 => 'backups_cron.php',
    3 => 'data_tree.class.php',
    'help' => 
    array (
      'ru' => 
      array (
        0 => 'global_prop-form_save.html',
        1 => 'global_prop-glob_action.html',
        2 => 'global_prop-info_site.html',
        3 => 'global_prop-sys_prop.html',
        4 => 'polzovateli-active_admins.html',
        5 => 'polzovateli-control_admins.html',
        6 => 'polzovateli-control_group.html',
        7 => 'polzovateli-group_access.html',
        8 => 'stat-form_host.html',
        9 => 'stat-show_domain.html',
        10 => 'stat-show_index.html',
        11 => 'stat-show_ip.html',
        12 => 'stat-show_partner.html',
        13 => 'stat-show_referer.html',
        14 => 'stat-show_word.html',
      )


Рейтинг:

Теги: PHP файл папка

Если вы знаете более оригинальное, красивое, ЛУЧШЕЕ решение этой задачи, у вас есть шанс заработать 100 рублей!!! Если ваше решение будет признано лучшим, деньги ваши! Мы гарантируем выплату!

PHP

 

Последние комментарии
  • phpguru

    Функция отличная только надо бы добавить для utf8 кодировку обработать строку, а то не все понимают как сделать подобное!
    $str = iconv_strlen($str,'UTF-8');
    Я так считаю!
    13-12-2013 в 12:59:38 ID# 454 посмотреть...


  • SnipCode.ru

    Возможно Вы правы, непонятно только зачем тут iconv_strlen (((
    13-12-2013 в 13:02:55 ID# 455 посмотреть...


  • Сергей

    поторопился, так надо в конце, пардон.
        return $v['pass'];
        }
    return FALSE;
    }

    02-12-2013 в 23:33:41 ID# 377 посмотреть...


  • Сергей

    Думаю все же логичней использовать foreach, т.к. можно промахнуться с ключами, а если массив ассоциативный (я раньше делал ключ = дата и время регистрации), то вообще работать не будет.
     
    function search($array,$login)
    {
       foreach ($array as $k=>$v)
        if($v['login'] == $login){
        return $v['pass'];
        }
    }
    return FALSE;
    Так, на минутку.
    Время исполнения смысла не имеет, авторизация используется 1 раз, если юзер не параноик)))

    02-12-2013 в 23:33:41 ID# 376 посмотреть...


  • Пабло

    Как сделана ваша система рейтинга,с учетом количеством людей,проголосовавших?
    11-11-2013 в 17:04:39 ID# 207 посмотреть...


  • SnipCode.ru

    ну...вобщем то все просто: берем общую оценку, делим на кол-во проголосовавших, получаем рейтинг
    11-11-2013 в 17:07:06 ID# 208 посмотреть...


  • Пабло

    Да,просто у меня возникли проблемы,при сохранении данных,в бд и отображение количество проголосовавших людей,у вас где нибудь на сайте описано как это сделано или будет?
     
    Мне нужна система рейтинга точно такая же как у вас=)
    11-11-2013 в 17:10:56 ID# 209 посмотреть...


  • KorniloFF

    Приведенный код обрезает до первой точки в строке, в случае, если в ней будет их несколько, что не соответствует теме.
    Вот код, обрезающий до последней точки:

    PHP

    $title= preg_replace("/([\s\S.]+)\.\w+$/","$1",$str)
     

    10-11-2013 в 10:45:29 ID# 205 посмотреть...


  • Виктор

    Все отлично работает! Извините , у меня есть задача отрезать после второй и до второй запятой , что нужно поправить в первом примере?
    Спасибо!
    30-09-2013 в 20:34:07 ID# 204 посмотреть...