-2

我的主要目标是检查 ID == 从 1 到 50 是否,如果是,那么我需要根据 ID 回显日期时间,例如如果 ID === 5 echo $dtime['5'] 等等,我制作了一个数组来增加每个 ID 的天数

$dtime = array(
     1  => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 0 days')),
     2  => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 1 days')),
     3  => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 2 days')),
     4  => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 3 days')),
     48 => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 47 days')),
     49 => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 48 days')),
     50 => date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+ 49 days')),
     );

这是我的 if/elseif 语句

if ($next_id === 1):
 echo $dtime['1'];
elseif ($next_id === 2):
 echo $dtime['2'];
elseif ($next_id === 3):
 echo $dtime['3'];
 echo $dtime['48'];
elseif ($next_id === 49):
 echo $dtime['49'];
elseif ($next_id === 50):
 echo $dtime['50'];
endif;

一切都以这种方式运行良好,但我相信如果没有所有这些线路,有一种捷径可以实现我的目标,有什么想法吗?提前致谢。

4

5 回答 5

2

你可以做

echo date('Y/m/d H:i:s', strtotime($rdate['r_date']. sprintf('+ %d days', $next_id - 1)));

对有效值的约束$next_id留给读者作为练习。

于 2013-07-06T06:14:11.913 回答
1
if(in_array($next_id, range(1, 50))) { //if value of next_id is valid (based on condition u applied)
  echo date('Y/m/d H:i:s', strtotime($rdate['r_date']. '+'. ($next_id - 1).' days')),
}
于 2013-07-06T06:18:56.283 回答
0

if else如果您的 next_id 和条件相同,您可以将键添加到数组

echo $dtime[$next_id];

你也可以用我的输出进行测试,

让我知道我是否可以为您提供更多帮助。

于 2013-07-06T06:16:17.173 回答
0
$dtime = date('Y/m/d H:i:s', strtotime($rdate['r_date']) + ($next_id-1)*(60*60*24) );

第一步是将您的日期 $rdate['r_date'] 转换为 Unix 时间戳。然后加上(60*60*24),就是一天的秒数。最后,使用 date() 函数将其全部转换回日期时间格式。

于 2013-07-06T06:18:32.483 回答
0

建立你的阵列 -

$dtime=array();
for($i=0;$i<49;$i++){
    $dtime[$i+1] = date('Y/m/d H:i:s', strtotime($rdate['r_date']. "+ $i days"));
}

获得你的价值

$next_id=##;
if (array_key_exists($next_id, $dtime)) {
    echo $dtime[$next_id];
}
于 2013-07-06T06:22:07.267 回答