我有以下PHP显示月份,然后是foreach中的IF语句,如果该月份是2月,则执行li
:
$months = array('1' => 'January', '2' => 'February', '3' => 'March', '4' => 'April', '5' => 'May', '6' => 'June', '7' => 'July', '8' => 'August', '9' => 'September', '10' => 'October', '11' => 'November', '12' => 'December');
echo '<li><a class="by_month"></a><ul class="monthby" name="monthby">';
foreach($months as $month => $monthtitle):
if ($month == '2'){
echo '<li title="'.$monthtitle.'" rel="'.$month.'"><a href="#" title="'.$monthtitle.'">'.$monthtitle.'</a></li>';
}
endforeach;
echo '</ul></li>';
如何修改上述代码,如果该月份为2月,则排除前几个月。基本上,我想创建一个当前月份和即将到来的月份的列表,但不包括一年中的过去几个月。
因此,例如,如果月份是11月,则该列表仅显示11月和12月。这将排除所有前几个月。
我该怎么做?我想我需要用IF语句做一些事情,比如我开始使用date('n')
获取当前月份然后忽略当前月份的前几个月。
任何帮助?
答案 0 :(得分:2)
将数组键设置为Ints并将它们与日期('n')进行比较(n表示没有前缀为零的月份)
foreach($months as $month => $monthtitle):
if ((int)$month >= (int)date('n')){
echo '<li title="'.$monthtitle.'" rel="'.$month.'"><a href="#" title="'.$monthtitle.'">'.$monthtitle.'</a></li>';
}
endforeach;
答案 1 :(得分:0)
答案 2 :(得分:0)
我认为这样的事情可以让你开始:
<?php
$months = array('1' => 'January', '2' => 'February', '3' => 'March', '4' => 'April', '5' => 'May', '6' => 'June', '7' => 'July', '8' => 'August', '9' => 'September', '10' => 'October', '11' => 'November', '12' => 'December');
echo '<li><a class="by_month"></a><ul class="monthby" name="monthby">';
$a = date('n',time()); // current month (numeric)
for($i = $a; $i <= 12; $i++){
echo '<li title="'.$months[$i].'" rel="'.$months[$i].'"><a href="#" title="'.$months[$i].'">'.$months[$i].'</a></li>';
}
echo '</ul></li>';
答案 3 :(得分:0)
我会考虑使用内置的date函数,因此您不必在代码中手动列出月份。然后我可以使用mktime函数将月份转换为时间戳并根据它进行比较。我在下面放了一些代码,这里是codepad的链接。
$currentMonth = 2;
$currentTime = mktime(0, 0, 0, $currentMonth, 1, 2012);
for ($i = 1; $i <= 12; $i++) {
$iTime = mktime(0, 0, 0, $i, 1, 2012);
if ($iTime >= $currentTime) {
$monthTitle = date('F', $iTime);
echo '<li title="' . $monthTitle . '" rel="' . $i . '"><a href="#" title="' . $monthTitle . '">' . $monthTitle . '</a></li>';
}
}