#php
Вопрос:
Поэтому я приношу извинения, если это дублирующий вопрос, но я не нашел ответа. Ниже у меня есть немного PHP-кода, который работает не так, как ожидалось.
В основном я выполняю загрузку файла на сервер, первое условие возвращает значение true, попадает в цикл foreach и выполняет второе условие и переименовывает файл с номером версии
цикл продолжается, но второе условие никогда не принимает значение true, поэтому счетчик никогда не обновляется, а файл отправляется на сервер с дублирующим именем.
исходное имя файла: имя файла.pdf
второе имя файла: имя файла _2.pdf
третье имя файла: имя файла _2.pdf
почему не выполняется оценка файла как истинного????
$dir = new DirectoryIterator(dirname($file_path));
$counter = 1;
if (file_exists($file_path . "/" . $filename)) {
foreach ($dir as $fileinfo) {
if (file_exists($file_path . "/" . $filename)) {
eo($filename);
$counter = 1;
$filename = pathinfo($filename, PATHINFO_FILENAME)."_$counter.".strtolower(pathinfo($filename, PATHINFO_EXTENSION));
}
}
}
Комментарии:
1. Непонятно, что вы здесь пытаетесь сделать. Вы никогда не ссылались на свою
$fileinfo
переменную. Ваши дваfile_exists
вызова идентичны, поэтому, если первый верен, второй также всегда будет верным.
Ответ №1:
Удалите первый if (file_exists($file_path . "/" . $filename)) {...}
и используйте $fileinfo
внутри второго if
.