我有這個生效日期,陣列開始并每 12 個周期重復一次。那么如何檢查特定日期的項目價值呢?我試圖從生效日期開始獲取特定日期的項目值,但它沒有返回任何值。<?php$start_date = '2019-01-01';$end_date = '2019-01-30';$item = array('a','a','a','a','o','o','b','b','b','b','o','o');$i = 0;while (strtotime($start_date) <= strtotime($end_date)) { $i = $i+1; $value = $item[$i]; if($start_date == '2019-01-05') { echo "Date:".$start_date." Value:".$value; echo "</br>"; } if($start_date == '2019-01-07') { echo "Date: ".$start_date." Value: ".$value; echo "</br>"; } if($start_date == '2019-01-25') { echo "Date: ".$start_date." Value: ".$value; echo "</br>"; } $start_date = date ("Y-m-d", strtotime("+1 day", strtotime($start_date))); }?>我希望輸出如下:Date:2019-01-05 Value:oDate: 2019-01-07 Value: bDate:2019-01-25 Value:a但我得到:Date:2019-01-05 Value:oDate: 2019-01-07 Value: bDate:2019-01-25 Value:如何從生效日期開始每 12 個周期獲取日期的第 n 個值?
2 回答

縹緲止盈
TA貢獻2041條經(jīng)驗 獲得超4個贊
你不需要一個循環(huán)。循環(huán)很慢。
function getItem($date, $startDate){
$item = array('a','a','a','a','o','o','b','b','b','b','o','o');
$diff = date_create($startDate)->diff(date_create($date));
if($diff->invert) return false; //error $date < $startDate
return $item[$diff->days%12];
}
//example for use
$date = "2019-01-25";
$startDate = '2019-01-01';
echo getItem($date, $startDate); //a

慕婉清6462132
TA貢獻1804條經(jīng)驗 獲得超2個贊
您的問題是,一旦超過數(shù)組的長度,您就不會重置數(shù)組索引。您可以通過更改來解決此問題:
$i = $i+1;
到
$i = ($i+1) % 12;
請注意,如果您啟用了 PHP 錯誤報告(請參閱此處),您將收到“未定義偏移”通知,這將幫助您找到此問題。
- 2 回答
- 0 關注
- 234 瀏覽
添加回答
舉報
0/150
提交
取消