Пытался создавать файлы по порядку, но по какой-то причине это не выход. Если папка пуста, то он должен создать файл report_ps_1.txt, если уже есть, то он берет последнее значение файла, получает число после _ (то есть 1), а потом прибавляет единицу, в конце создает файл report_ps_2.txt и т.д. Но по какой-то причине, когда дошел до 10, перестает создавать. PHP: private function Reports() { if( opendir($_SERVER['DOCUMENT_ROOT'] . $this->reportsDir) ) { $lastFile=pathinfo(scandir($_SERVER['DOCUMENT_ROOT'] . $this->reportsDir, 1)[0], PATHINFO_FILENAME); $numberReport='report_ps_'.explode('_', $lastFile)[( $lastFile ) ? 2 : 0]+1; //return ( $lastFile ) ? 2 : 0; } else $lastFile='report_ps_1'; $file=fopen($_SERVER['DOCUMENT_ROOT'] . $this->reportsDir.'/'.$lastFile.'.txt', 'w+'); } Проверка в индексе "( $lastFile ) ? 2 : 0" сделана во избежании предупреждения.
Ну посмотри, что у тебя происходит с этим выражением, когда дошёл до 10. Тут у нас в голове отладчика php нету.
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...
@Danil005, вот простой пример выделения номераи его инкремента из представленного названия файла: PHP: $str = 'report_ps_7.txt'; preg_match('/\d+/', $str, $arr); var_dump($arr); $n = $arr[0]; $n++; var_dump($n); $n++; var_dump($n); $n++; var_dump($n); $n++; var_dump($n); $n++; var_dump($n);