За последние 24 часа нас посетили 32002 программиста и 1380 роботов. Сейчас ищут 902 программиста ...

Создание файлов по порядку

Тема в разделе "PHP для новичков", создана пользователем Danil005, 30 ноя 2017.

  1. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Пытался создавать файлы по порядку, но по какой-то причине это не выход. Если папка пуста, то он должен создать файл report_ps_1.txt, если уже есть, то он берет последнее значение файла, получает число после _ (то есть 1), а потом прибавляет единицу, в конце создает файл report_ps_2.txt и т.д. Но по какой-то причине, когда дошел до 10, перестает создавать.

    PHP:
    1. private function Reports() {
    2.         if( opendir($_SERVER['DOCUMENT_ROOT'] . $this->reportsDir) ) {
    3.             $lastFile=pathinfo(scandir($_SERVER['DOCUMENT_ROOT'] . $this->reportsDir, 1)[0], PATHINFO_FILENAME);
    4.             $numberReport='report_ps_'.explode('_', $lastFile)[( $lastFile ) ? 2 : 0]+1;
    5.             //return ( $lastFile ) ? 2 : 0;
    6.         } else $lastFile='report_ps_1';
    7.         $file=fopen($_SERVER['DOCUMENT_ROOT'] . $this->reportsDir.'/'.$lastFile.'.txt', 'w+');
    8.     }
    Проверка в индексе "( $lastFile ) ? 2 : 0" сделана во избежании предупреждения.
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Ну посмотри, что у тебя происходит с этим выражением, когда дошёл до 10. Тут у нас в голове отладчика php нету.
     
  3. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    var_dump($lastFile): string(12) "report_ps_10"
    var_dump($file): resource(35) of type (stream)
    --- Добавлено ---
    А если добавить перед $numberReport
    var_dump($lastFile): string(11) "report_ps_9"
    --- Добавлено ---
    Всегда report_ps_9...
     
  4. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Как получить последний файл папки?
     
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @Danil005, вот простой пример выделения номераи его инкремента из представленного названия файла:
    PHP:
    1. $str = 'report_ps_7.txt';
    2. preg_match('/\d+/', $str, $arr);
    3. var_dump($arr);
    4. $n = $arr[0];
    5. $n++;
    6. $n++;
    7. $n++;
    8. $n++;
    9. $n++;
     
  6. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    @Sail, спасибо, но я сделал проще
    PHP:
    1. 'report_ps_'.date('dmyhis', time());