php循环并跳过文件存在

时间:2014-01-01 21:34:33

标签: php loops if-statement

我需要一些PHP逻辑方面的帮助。我正在将图像添加到已存在某些图像的目录中。我正试图遍历目录并跳过名称,如果它们存在......很难解释......这就是我所拥有的:

if(isset($_POST['imgName'])){
$artName = $_POST['imgName'];
if ($_FILES['file']['name'][0] != ""){
    $num = 0;
    for ($i=0; $i < count($_FILES['file']['name']); $i++){
        $fileExt = str_replace("image/", ".", $_FILES['file']['type'][$i]);
        $newFileName = "..//images/$num$artName$fileExt";
        if (file_exists($newFileName)){
            $num++;
            $newFileName = "..//images/".$num.$artName.$fileExt;
            move_uploaded_file($_FILES['file']['tmp_name'][$i], $newFileName);
        }
    }
}
}

我尝试做一个while循环和一个while循环,我无法让它工作......也许我做错了。我可以请一些建议吗?感谢...

这是一个博客,所以$ artName是文章名称... $ num [0]将是主要图像,其余将是图库图像

1 个答案:

答案 0 :(得分:0)

解决方法解决方案:

if(isset($_POST['imgName'])){
$artName = $_POST['imgName'];
if ($_FILES['file']['name'][0] != ""){
    $pics = glob('..//images/*'.$artName.'*');
    if($pics[0] != ""){
        for($j=0; $j<count($pics); $j++){
            $path = pathinfo($pics[$j]);
            $ext = $path['extension'];
            rename($pics[$j], "..//images/".$j.$artName.".".$ext);
        }
    }
    $num = count($pics);
    for ($i=0; $i < count($_FILES['file']['name']); $i++){
        $fileExt = str_replace("image/", ".", $_FILES['file']['type'][$i]);
        $newFileName = "..//images/$num$artName$fileExt";
        move_uploaded_file($_FILES['file']['tmp_name'][$i], $newFileName);
        $num++;
    }
}
}

我提出的解决方法是检查与文章相关的图像,这些图像已经在目录中并重命名。然后使用计数(目录中的图像)并将其设置为$ num并使用$ num作为新图像名称的一部分......这样就没有重复项了。这是一个更好的解决方案,我很乐意听到它......