PHP 检查文件是否不存在于任何目录中

PHP check if file not exists in any directory

如何检查一个文件是否不存在于任何目录中,添加到$notexists数组中。

foreach($files as $file){
   foreach ($folders as $this_folder) {
     if (file_exists($this_folder.$file)) {
        $exists[] =$file;
        continue;
     }else{
         // What to do if file is not exist in any directory, add into array.
         $notexists[] = '';
    }
}

您需要等到循环结束才能知道是否在任何目录中都找不到该文件。

continue;应该是break;continue restarts 开始当前循环的下一次迭代,但是一旦找到文件就想完全退出循环。

foreach($files as $file){
    $found = false;
    foreach ($folders as $this_folder) {
        if (file_exists($this_folder.$file)) {
            $exists[] =$file;
            $found = true;
            break;
        }
    }
    if (!$found) {
        // What to do if file is not exist in any directory, add into array.
        $notexists[] = $file;
    }
}

您可以使用 array_diff() 检查未找到的文件:

foreach($files as $file){
   foreach ($folders as $this_folder) {
     if (file_exists($this_folder.$file)) {
        $exists[] =$file;
        break;
     }
}
$notexists = array_diff($files, $exists);

您可以在 else 条件之后直接存储它们,因为您使用 break; 您不必担心迭代

foreach($files as $file){
 foreach ($folders as $folder_path) {

   /* NOTE : the '@' here before the file_exists() function 
      is to manage this function errors by yourself after the `else` condition , 
      otherways you can remove it to see the native php errors .
      */

   if (@file_exists($folder_path.$file)) {
   $exists[] = $file;
   break;

   }else{
   $notexists[] = $file;
   }
 }
}

结果:

Exist Files      : Array ( [0] => index.php [1] => head.php )
Non Exist ones : Array ( [0] => random_file.random )

但请注意,您需要先定义这些数组,然后再在条件中使用它们,这样如果它们 return 是一个空数组,当您将它们作为结果循环时,您以后不会得到未定义的错误。
所以在你的第一个 foreach() 之前添加这些变量定义

$exists    = array();
$notexists = array();
$folders   = array('./'); // your folders list ofc should be here ..