0

我将数组发布到 php 尝试删除目录中的文件而不是数组中的文件。

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

我尝试了下面错误的函数,将while放在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
       }    
    }
}
4

1 回答 1

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;
   }    
}
于 2013-07-28T09:33:05.507 回答