删除目录中的文件与数组不匹配

时间:2013-07-28 09:28:21

标签: php

我发布数组到php尝试删除目录中的文件但不在数组中。

下面的代码foreach可以获取数组中的文件名,同时获取目录中的所有文件。

我尝试了下面这个错误的函数,把它放在foreach期望找到文件不匹配$ row然后取消链接。但它失败了它将删除数组中的一些文件..似乎我的逻辑错了。我做错了什么?

$dir = "img/";

foreach($img_arr as $row) {
    print $row;  // get : 2.png 3.png 0.png    ....
}

$opendir = opendir($dir);
while ($file = readdir($opendir)) {
    // if($file != $row && $file!="." && $file!=".."){
        print $file;  //get : ...2.png 3.png ...0.png   ....
    // }    
}

$dir = "img/";

foreach($img_arr as $row) {
    print $row;  // get : 2.png 3.png 0.png    ....

    $opendir = opendir($dir);
    while ($file = readdir($opendir)) {
       if($file != $row && $file!="." && $file!=".."){
          print $file;  // expect get the file not match $row
       }    
    }
}

1 个答案:

答案 0 :(得分:4)

使用in_array检查$img_arr中是否存在文件:

$img_arr = array(.....); // here comes your array
$opendir = opendir($dir);
// don't forget to stop while-loop also
while (($file = readdir($opendir)) !== false) {
   if($file!="." && $file!=".." && !in_array($file, $img_arr)){
      print $file;
   }    
}