【发布时间】:2010-09-25 03:50:47
【问题描述】:
在一个页面上,我想动态列出年份和每年的所有月份,以便可以查看每个月的存档。我想先显示当前年份,但当前年份可能还没有结束,所以我只想显示已经过去的月份和当前月份。然后我想要自今年以来(即 2008 年)过去的所有年份和所有月份。
我创建的完成这项工作的 PHP 代码如下。有没有更有效的方法来实现这一目标?我正在运行 PHP 5.2。
$current_year = date('Y');
$months = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
// Loop through all the months and create an array up to and including the current month
foreach ($months as $month)
{
if ($month <= date('m'))
{
switch ($month)
{
case 1:
$years[$current_year][] = 'January';
break;
case 2:
$years[$current_year][] = 'February';
break;
case 3:
$years[$current_year][] = 'March';
break;
case 4:
$years[$current_year][] = 'April';
break;
case 5:
$years[$current_year][] = 'May';
break;
case 6:
$years[$current_year][] = 'June';
break;
case 7:
$years[$current_year][] = 'July';
break;
case 8:
$years[$current_year][] = 'August';
break;
case 9:
$years[$current_year][] = 'September';
break;
case 10:
$years[$current_year][] = 'October';
break;
case 11:
$years[$current_year][] = 'November';
break;
case 12:
$years[$current_year][] = 'December';
break;
}
}
}
// Previous years
$years_to_create = $current_year - 2008;
if (!empty($years_to_create))
{
for ($i = 1; $i <= $years_to_create; $i++)
{
$years[$current_year - $i] = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
}
}
【问题讨论】:
-
为什么要存储这些值?如果您在不先存储它们的情况下简单地显示这些值,您可能会更快地执行此操作。
-
需要将它们存储起来,以便将它们传递给用于模板的 Smarty。
标签: php language-agnostic datetime performance