我发布数组到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
}
}
}
答案 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;
}
}