检查从生效日期开始的每个日期的第 n 项

我有这个生效日期,阵列开始并每 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:o

Date: 2019-01-07 Value: b

Date:2019-01-25 Value:a

但我得到:


Date:2019-01-05 Value:o

Date: 2019-01-07 Value: b

Date:2019-01-25 Value:

如何从生效日期开始每 12 个周期获取日期的第 n 个值?


白衣非少年
浏览 239回答 2
2回答

缥缈止盈

你不需要一个循环。循环很慢。function getItem($date, $startDate){&nbsp; $item = array('a','a','a','a','o','o','b','b','b','b','o','o');&nbsp; $diff = date_create($startDate)->diff(date_create($date));&nbsp; if($diff->invert) return false; //error $date < $startDate&nbsp; return $item[$diff->days%12];}//example for use$date = "2019-01-25";$startDate = '2019-01-01';echo getItem($date, $startDate);&nbsp; //a

慕婉清6462132

您的问题是,一旦超过数组的长度,您就不会重置数组索引。您可以通过更改来解决此问题:$i&nbsp;=&nbsp;$i+1;到$i&nbsp;=&nbsp;($i+1)&nbsp;%&nbsp;12;请注意,如果您启用了 PHP 错误报告(请参阅此处),您将收到“未定义偏移”通知,这将帮助您找到此问题。
打开App,查看更多内容
随时随地看视频慕课网APP