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 關注
- 114 瀏覽
添加回答
舉報