亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嵌套的 foreach 增加兩個索引/檢查日期是否在 2 個數組之間

嵌套的 foreach 增加兩個索引/檢查日期是否在 2 個數組之間

PHP
HUX布斯 2023-04-15 17:11:35
有沒有辦法同時增加 2 個嵌套的 foreach 循環?我有 2 個數組:$datum = new DateTime("now");$jaar = date("y",strtotime('now'));$maand = strftime("%B");$vakanties_start = array(    "BeginKerst"       =>   new DateTime("$jaar-01-01"),    "Voorjaar"         =>   new DateTime("$jaar-02-22"),    "Mei"              =>   new DateTime("$jaar-04-25"),    "Zomer"            =>   new DateTime("$jaar-07-18"),    "EindKerst"        =>   new DateTime("$jaar-12-21"),    "Test"             =>   new DateTime("$jaar-05-20"));$vakanties_eind = array(    "BeginKerst"       =>   new DateTime("$jaar-01-05"),    "Voorjaar"         =>   new DateTime("$jaar-03-01"),    "Mei"              =>   new DateTime("$jaar-05-03"),    "Zomer"            =>   new DateTime("$jaar-08-30"),    "EindKerst"        =>   new DateTime("$jaar-12-31"),    "Test"             =>   new DateTime("$jaar-05-25"));假期的開始和假期的結束。我需要檢查今天是否在那些日子之間。我試圖用 2 個 foreach 循環來檢查,但我會得到這個錯誤:start vacation: 1-1end vacation: 5-1start: 1-1end: 3-1等等等等。這顯然不是我想要的方式,因為這意味著在第一個 foreach 結束時,假期在 1-1 和 31-12 之間。我嘗試過的其他方法是像這樣驗證數組的鍵:    foreach ($vakanties_start as $vakantie_start){        foreach ($vakanties_eind as $vakantie_eind){            if ($vakantie_start->format('Y-m-d') >= $datum->format('Y-m-d') && $vakantie_eind->format('Y-m-d') <= $datum->format('Y-m-d')){                if (key($vakantie_start) == key($vakantie_eind)){                    echo $vakantie_start->format('Y-m-d') . "<br>" . key($vakanties_start) . "<br>";                    echo $vakantie_eind->format('Y-m-d') . "<br>" . key($vakanties_eind) . "<br>";                }             }        }    }但這使得代碼只顯示日期 1-1 到 5-1。有人可以指導我正確的方向嗎?也許我做的完全錯了,但我不知道更簡單的解決方案。
查看完整描述

1 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

你走在正確的軌道上。我改變了組織數據的方式,因此迭代它們更簡單。


我還在DateTime()比較中使用了對象,因為它們具有可比性。無需先將它們格式化為字符串。


$jaar = date('Y');

$vakanties = [

? ? 'BeginKerst' => [

? ? ? ? 'start' => new DateTime("$jaar-01-01"),

? ? ? ? 'end'? ?=> new DateTime("$jaar-01-05"),

? ? ],

? ? 'Voorjaar' => [

? ? ? ? 'start' => new DateTime("$jaar-02-22"),

? ? ? ? 'end'? ?=> new DateTime("$jaar-03-01"),

? ? ],

? ? 'Mei' => [

? ? ? ? 'start' => new DateTime("$jaar-04-25"),

? ? ? ? 'end'? ?=> new DateTime("$jaar-05-03"),

? ? ],

? ? 'Zomer' => [

? ? ? ? 'start' => new DateTime("$jaar-07-18"),

? ? ? ? 'end'? ?=> new DateTime("$jaar-08-30"),

? ? ],

? ? 'EindKerst' => [

? ? ? ? 'start' => new DateTime("$jaar-12-21"),

? ? ? ? 'end'? ?=> new DateTime("$jaar-12-31"),

? ? ],

? ? 'Test' => [

? ? ? ? 'start' =>? new DateTime("$jaar-05-20"),

? ? ? ? 'end'? ?=> new DateTime("$jaar-05-25"),

? ? ],

];


$now = new DateTime();

foreach ($vakanties as $name => $vakanty) {

? ? if ($now >= $vakanty['start'] && $now <= $vakanty['end']) {

? ? ? ? echo "today is in the middle of a vacation: " . $name;

? ? }

}

輸出


today is in the middle of a vacation: Test


查看完整回答
反對 回復 2023-04-15
  • 1 回答
  • 0 關注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號