在while循环中整数不会增加值

时间:2019-03-28 10:14:36

标签: php loops while-loop

我的代码有问题,如果文件名已经存在,我试图将数字附加到文件名中。像这样

$explode = explode(".", $fileName);
$extension = end($explode);
$fileactualname = reset($explode);
$i = 0;
while (file_exists($location.$fileName)) {
    $i++;
}
$fileName= $i.$fileName;
$name = $fileName;
$moveResult = move_uploaded_file($fileTmpLoc, $location . "/". $name);
if ($moveResult != true) {
    @unlink($fileTmpLoc);
    header('location: ' . URL . '?page=0&sort=name&type=desc&folder=uploads/&message=uploaderror');
}

不幸的是,由于某种原因,$i每次循环都不会将其值增加1,而是以这种方式将文件名添加到文件名中1234filename.jpg,我的文件名变量在循环之后,我无法理解为什么正在累积。我期望得到($ i)filename.jpg一个数字 重新启动本地服务器后,便开始使用DUUUH以下提供的代码

1 个答案:

答案 0 :(得分:2)

将数字连接到文件名时,您需要使用实际的文件名,而不是已经添加了数字的文件名。

// not sure why you are splitting the filname up here
$explode = explode(".", $fileName);
$extension = end($explode);
$fileactualname = reset($explode);

$i = 0;
$fn = $fileName;

while (file_exists($location.$fn)) {
    $i++;
    // add number to actual filename
    $fn = $i.$fileName;
}

$name = $fn;
$moveResult = move_uploaded_file($fileTmpLoc, $location . "/". $name);