PHP循环通过月数组

kim*_*n09 16 php arrays date

这应该很容易,但我遇到了麻烦......

在PHP中,我如何回显一个默认为当前月份的选择下拉框,并提供8个月前的选项(即使它在去年).

例如,本月默认为6月,11月结束.

dec*_*eze 33

$months = array();
for ($i = 0; $i < 8; $i++) {
    $timestamp = mktime(0, 0, 0, date('n') - $i, 1);
    $months[date('n', $timestamp)] = date('F', $timestamp);
}
Run Code Online (Sandbox Code Playgroud)

"自定义"月份名称的替代方案:

$months = array(1 => 'Jan.', 2 => 'Feb.', 3 => 'Mar.', 4 => 'Apr.', 5 => 'May', 6 => 'Jun.', 7 => 'Jul.', 8 => 'Aug.', 9 => 'Sep.', 10 => 'Oct.', 11 => 'Nov.', 12 => 'Dec.');
$transposed = array_slice($months, date('n'), 12, true) + array_slice($months, 0, date('n'), true);
$last8 = array_reverse(array_slice($transposed, -8, 12, true), true);
Run Code Online (Sandbox Code Playgroud)

要输出下拉列表这样的月份,就像这样简单:

<select name="month">
    <?php
        foreach ($months as $num => $name) {
            printf('<option value="%u">%s</option>', $num, $name);
        }
    ?>
</select>
Run Code Online (Sandbox Code Playgroud)


Ale*_*vić 16

如果您需要像选择框选项一样打印,请尝试使用:

for($i=1;$i<13;$i++)
print("<option>".date('F',strtotime('01.'.$i.'.2001'))."</option>");
Run Code Online (Sandbox Code Playgroud)


Sam*_*amT 10

$months = array(
    'January',
    'February',
    'March',
    'April',
    'May',
    'June',
    'July ',
    'August',
    'September',
    'October',
    'November',
    'December',
);

$current = date('F');
$start = array_search($current, $months);

$toshow = array();
$total = 0;
for($i = $start; $total < 8; $i--)
{
    if($i == 0)
    {
        $i = 12;
    }

    $toshow[] = $months[$i];
    $total++;
}

var_dump($toshow);
Run Code Online (Sandbox Code Playgroud)

试一试,只需将$ toshow转储到您的HTML中.