php 检查文件是否同时存在于多个文件夹中

php check if file exist on multiple folders at the same time

当我想检查一个文件是否存在,如果存在添加一个后缀时,我使用下面的代码,它工作正常

    $increment = ''; //start with no suffix
    while(file_exists($_SERVER["DOCUMENT_ROOT"]."/".$file_name . $increment . '.' . $extension)) 
    {
       $increment++;
    }
    $final_name = $file_name . $increment. '.' . $extension;

现在我必须检查文件是否存在于多个文件夹中以及文件夹的名称是否在一个数组中(我可以从该数组中添加或删除文件夹);

$folders[] = "thumb";
$folders[] = "medium";
$folders[] = "large";
$folders[] = "xlarge";

现在我必须检查文件是否存在于所有这些文件夹中。

如果文件存在于其中一个文件夹中,我必须添加后缀 再次检查,直到文件不存在于所有这些文件夹中

感谢任何帮助。

我同意@arkascha 的观点,如果文件供内部使用,使用具有唯一哈希的文件名会更好。

但如果有必要, 尝试使用 foreach() 一次检查数组中的那些前缀。

function files_suffix_exists($file_name, $folders){
    $root = $_SERVER["DOCUMENT_ROOT"];
    if(file_exists($root."/".$file_name . '.' . $extension){
        return true;
    }
    foreach($folders as $folder){
        if(file_exists($root."/".$folder."/".$file_name . '.' . $extension){
            return true;
        }
    }
    return false;
}

$folders[] = "thumb";
$folders[] = "medium";
$folders[] = "large";
$folders[] = "xlarge";


$increment = ''; //start with no suffix
while(files_suffix_exists($file_name, $folders))
   $increment++;
   $file_name .= $increment;
}

$final_name = $file_name . '.' . $extension;