За последние 24 часа нас посетили 66787 программистов и 1638 роботов. Сейчас ищут 935 программистов ...

Не срабатывает условие и оптимизация функции

Тема в разделе "PHP для новичков", создана пользователем Greg1978, 28 дек 2008.

  1. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    Доброго времени суток!
    Есть функция по выводу папок из каталога, если можно подскажите как её оптимизировать.
    PHP:
    1.  
    2. <?php
    3. function Directory($dir_path){
    4.         static $not_path = array();
    5.         $count = count($dir_path);
    6.         for($i=0;$i<$count;$i++){
    7.         $handle = opendir($dir_path[$i]);
    8.             while ($file = readdir ($handle)) {
    9.                 if(is_dir($file) && $file != "." && $file!= ".."){
    10.                     if(!in_array($dir_path[$i]."".$file,$dir_path)){
    11.                     $not_path[]=$dir_path[$i]."".$file;
    12.                     }
    13.                     Directory($file);
    14.                 }
    15.             }
    16.         closedir($handle);
    17.         }
    18.     return $not_path;
    19. }
    20. ?>
    21.  
    И вот это условие, а точнее условие по определению истинности директории не выполняется почему то.... :(
    PHP:
    1.  
    2. <?php
    3. if(is_dir($file) && $file != "." && $file!= ".."){
    4. ...
    5. ?>
    6.  
    Спасибо!!!
     
  2. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    скорее рекурсия не катит, зачем Directory($file); там?

    директорию можно проверять - удачно ли открылась. Также есть замечательная функция scandir
    http://ru2.php.net/scandir
     
  3. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    она массив ждет, а ты отдаешь строку, и ТОЛЬКО ИМЯ ФАЙЛА/ДИРЕКТОРИИ, а не полный путь
     
  4. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    т.е. она по буквам разбирает имена директорий и пробует их открыть :)
     
  5. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    $file - это не файл, а следующий каталог, не досмотрел просто по названию, переделывал чужой код.
     
  6. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    Сильно извиняюсь!!!
    В аргуменьы входит массив полных локальных путей с запроса из БД.
     
  7. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    типа так тогда должно помочь:
    Directory(array($dir_path[$i]."".$file));

    так получилось?
     
  8. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    :D Сенькс я понял!!!!!!!!!!!
     
  9. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    а как на счёт оптимизации, вроде как довольно ресурсов отъедает эти функции.
     
  10. sylex

    sylex Активный пользователь

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    Greg1978, хотелось бы знать, где и зачем применяется эта функция, при каких кол-вах файлов/директорий, как часто вызывается
     
  11. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Обычно каталоги перебираются с помощью рекурсий.