从测试我的应用程序开始,我在目录中有一堆额外的垃圾上传。我要保留的文件在数据库的表中。我想删除目录中没有的文件。这是我的尝试
<?php
$query = 'SELECT file_name FROM DummyFile';
$statement = $db->prepare($query);
$statement->execute();
$files_in_use = $statement->fetchAll();
$statement->closeCursor();
$path = getcwd();
$all_files_in_directory = scandir($path);
$all_files_in_directory = array_diff($all_files_in_directory, array('.', '..'));
foreach($all_files_in_directory as $file) {
if (!in_array($file, $files_in_use)) {
unlink($file);
}
}
?>
但是无论如何,此代码都会删除目录中的每个文件。这意味着我在循环中的条件在每次都不应该评估为true时进行评估。请帮助
答案 0 :(得分:1)
您假设$files_in_use
是文件名数组。不是;它是一个数据库行的数组,每个行本身都是一个数组。
仅获取所需的文件名:
$files_in_use = array_column($statement->fetchAll(), 'file_name');
其余的代码应该可以正常工作。