1 回答
TA贡献1891条经验 获得超3个赞
方法array_diff返回一个数组。所以你必须遍历那个数组。
$del_arr = array_diff($namefolderarray, $idarray);
foreach ($del_arr as $delid) {
rmdir('upload/'.$delid.'/');
}
更新 1
以前的解决方案仅适用于空文件夹。如果文件夹中有任何内容,则必须先删除该内容。这可以通过迭代内容的递归函数来完成。
function rmdir_recursively($path) {
if (is_dir($path)){
$list = glob($path.'*', GLOB_MARK);
foreach($list as $item) {
rmdir_recursively($item);
}
rmdir($path);
} else if (is_file($path)) {
unlink($path);
}
}
$del_arr = array_diff($namefolderarray, $idarray);
foreach ($del_arr as $del_id) {
rmdir_recursively('upload/'.$del_id.'/');
}
更新 2
要删除没有文件夹的数据库记录,您可以像这样扩展代码:
foreach ($del_arr as $del_id) {
rmdir_recursively('upload/'.$del_id.'/');
$del_id_escaped = mysqli_real_escape_string($del_id);
mysqli_query($db, "DELETE FROM objects WHERE id='$del_id_escaped'");
}
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报