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

时间:2016-09-21 09:43:16

标签: php file-exists

当我想检查文件是否存在以及是否存在时添加后缀我使用以下代码正常工作

    $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";

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

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

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

我同意@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;