0

配列をphpに投稿して、配列ではなくディレクトリ内のファイルを削除しようとします。

以下のコード foreach は、ディレクトリ内のすべてのファイルを取得しながら、配列内のファイル名を取得できます。

以下のような間違った関数を試してみましたが、 foreach に while を入れて、ファイルが $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 に答える