我想創建一個過濾器,如果在列表中找不到日期(星期一,星期二等),我想從DatePeriod中刪除特定的DateTime。我可以這樣說,我星期一和星期二工作。如果你發現這一天是星期四,繼續這個循環,不要包含它。從DatePeriod中刪除日期時間/對象
但是,我似乎無法做到這一點,因爲當我迭代DatePeriod時,我無法取消任何設置,因爲它不會將其視爲數組。有沒有辦法做到這一點?該代碼可以發現如下:
//Get all the start and end dates of the holidays (This will be run iteratively)
$get_st_date = $row['h_s_date'];
$get_end_date = $row['h_e_date'];
//Convert them to approprariate format to be used with DatePeriod
$get_begin = new DateTime("$get_st_date");
$get_end = new DateTime("$get_end_date");
//Add an extra day or else it will be omitted from the following process.
$get_end = $get_end->add(new DateInterval('P1D'));
//Count per day
$get_interval = DateInterval::createFromDateString('1 day');
$get_period = new DatePeriod($get_begin, $get_interval, $get_end);
//Iteration Count
$iter = 0;
foreach($get_period as $get_dt){
//Find if date is Saturday or Sunday. If it is, break that current loop.
$iter++;
$str_result = $get_dt->format('l');
if($str_result == "Saturday") {continue;}
elseif($str_result == "Sunday") {continue;}
elseif(!preg_match("($str_result)", $e_d_w_p_w)){
echo "<br>Don't count this day" . $str_result;
unset($get_period[$iter]);
continue;
}
然後關閉結束標記(我沒有將它這裏我做一些其他的東西
從上面的代碼,我得到以下錯誤: 「致命錯誤:未捕獲的錯誤:無法使用類型DatePeriod作爲陣列的對象」
有一種解決方法,以這種
澄清:$ e_d_w_p_w是「員工日每週工作」
$Ë _d_w_p_w格式化爲「星期一;星期二」等
是像天的字符串中的一個逗號分隔的列表'$ e_d_w_p_w'?你能提供一個例子嗎? – ishegg
@ishegg更新的問題,以便更好地闡明$ e_d_w_p_w。 「$ e_d_w_p_w被格式化爲」星期一;星期二「等 – cmprogram