Php 从生效日期开始,检查每个日期的第n项
我有这个生效日期,数组每12个周期开始并重复一次。那么如何检查特定日期的项目值 我尝试从生效日期开始获取特定日期的项目值,但它不返回任何值Php 从生效日期开始,检查每个日期的第n项,php,Php,我有这个生效日期,数组每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) <= strtoti
<?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:o
Date: 2019-01-07 Value: b
Date:2019-01-25 Value:
如何从生效日期开始每隔12个周期获取日期的第n个值?您的问题是,一旦数组索引超过数组长度,就不会重置数组索引。您可以通过更改以下内容来解决此问题:
$i = $i+1;
到
请注意,如果启用了PHP错误报告(请参阅),您将收到一条“未定义偏移量”通知,这将有助于您发现此问题。您的问题是,一旦数组索引超过数组长度,您就没有重置数组索引。您可以通过更改以下内容来解决此问题:
$i = $i+1;
到
请注意,如果启用了PHP错误报告(请参阅),您将收到一个“未定义的偏移量”通知,它将帮助您找到此问题。您不需要循环。循环很慢
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
函数getItem($date,$startDate){
$item=array('a','a','a','o','o','b','b','b','b','o','o');
$diff=date\u create($startDate)->diff(date\u create($date));
if($diff->invert)返回false;//错误$date<$startDate
返回$item[$diff->days%12];
}
//使用示例
$date=“2019-01-25”;
$startDate='2019-01-01';
echo getItem($date,$startDate)//A.
您不需要循环。循环很慢
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
函数getItem($date,$startDate){
$item=array('a','a','a','o','o','b','b','b','b','o','o');
$diff=date\u create($startDate)->diff(date\u create($date));
if($diff->invert)返回false;//错误$date<$startDate
返回$item[$diff->days%12];
}
//使用示例
$date=“2019-01-25”;
$startDate='2019-01-01';
echo getItem($date,$startDate)//A.
谢谢!我从来没有想过使用modolus运算符。它起作用了。对于您的替代解决方案,除了数组中的日期之外,我如何选择另一个日期?假设为“2019-03-01”,考虑到12个周期的生效日期,如何获得该日期的值值值从“2019-01-01”开始计算?天数的计算采用/(24*60*60);这是不对的。不是每天都有24小时(夏季/冬季时间变化的日子)。@jspit不敢相信我忘记了这一点。@jspit我认为这没关系,因为全国大部分地区每天都有24小时。@jspit是正确的,如果你有夏令时,此代码将不起作用。谢谢!我从来没有想过使用modolus运算符。它起作用了。对于您的替代解决方案,除了数组中的日期之外,我如何选择另一个日期?假设为“2019-03-01”,考虑到12个周期的生效日期,如何获得该日期的值值值从“2019-01-01”开始计算?天数的计算采用/(24*60*60);这是不对的。不是每天都有24小时(夏季/冬季时间变化的日子)。@jspit不敢相信我忘记了这一点。@jspit我认为这没关系,因为全国大部分地区每天都有24小时。@jspit是正确的,如果你有夏令时,这段代码将不起作用。很好。我在想不使用循环的问题是什么。好的。我在想,不使用循环的问题是什么。