2 回答
TA贡献1872条经验 获得超3个赞
如果您查看PHP:date文档,您会发现第二个参数需要一个整数,而不是字符串。
将您的代码更改为以下内容:
<?php
$output = [];
for ($day = 0; $day < 21; $day++) {
$output[] = strtotime(sprintf('+%d days', $day));
}
echo "<select name='days'>";
foreach ($output as $day)
{
echo "<option value='".$day."'>".date('l jS \of F Y', $day)."</option>";
}
echo "</select>";
您将在这里看到我们不是用字符串填充输出数组,而是用 21 个时间戳填充它。
一旦开始循环输出数组,将时间戳传递给日期函数的第二个参数将产生您期望的输出。
我将每个选项的值设置为该时间戳,因为如果您需要处理任何 POST 数据,它会让一切变得更容易处理。但您可以根据需要自由调整格式。
编辑:
仅供娱乐,以下是如何以更面向对象的风格来完成此操作。我觉得这种方式更简洁,但是否采用这种方法取决于您。
<?php
$today = new DateTime();
echo "<select name='days'>";
for ($day = 0; $day < 21; $day++)
{
echo "<option value='".$today->getTimestamp()."'>".$today->format('l jS \of F Y')."</option>";
$today->add(new DateInterval("P1D"));
}
echo "</select>";
- 2 回答
- 0 关注
- 138 浏览
添加回答
举报