面對你的代碼的主要問題似乎是如何流動的控制工作的誤解。您所採取的方法是嘗試使用if/else/endif
來構建你想怎麼你的代碼看起來而不是你希望你的代碼做什麼。
如果$_GET['delete_all']
作爲數組存在,並且以其他方式使用$_GET['delete_id']
,則您的過程將使用循環。因此,首先檢查變量的內容,然後採取適當的措施。整個事情可以通過將$_GET['delete_id']
到一個數組如果$_GET['delete_all']
不存在被簡化。
// Empty array we'll fill later
$delete_ids = array();
// If the delete_all array is available, use it as the array to delete from
if (isset($_GET['delete_all']) && is_array($_GET['delete_all'])) {
$delete_ids = $_GET['delete_all'];
}
// Next if delete_id is present
else if (isset($_GET['delete_id'])) {
// Place it into the array to use later
$delete_ids[] = $_GET['delete_id'];
}
else {
// Neither was set, you have an error state, so handle it however you need to
// Redirect, display an error, whatever.
}
// Now loop over your array and perform the action.
// The array either contains the original array from $_GET['delete_all'] or the single element $_GET['delete_id']
// Or it may be empty entirely, and therefore won't do anything
foreach ($delete_ids as $delete_id) {
$this->db_delete('ma_port', array('id' => $delete_id));
}
// And finish with your redirect
redirect($url);
「foreach():'後面沒有內容。備用流量控制語法(使用'如果不推薦HTML模板以外/ ENDIF的foreach/endforeach'。使用適當的括號內的控制結構和這個東西變得容易被發現。'如果(){...}否則{.. }'和'的foreach(){...}' –
哦,等一下,你想在這裏做什麼?它看起來很像你正試圖通過有條件地開始和結束循環,以程序上構建PHP代碼。 –
@ MichaelBerkowski我必須重複代碼嗎?它是唯一的解決辦法? – curiosity4834