1. ホーム
  2. php

[解決済み] ヶ月分の配列を PHP でループ処理

2022-02-07 12:52:53

質問

簡単なはずなのですが、困っています。

PHP で、選択式のドロップダウンボックスのデフォルトを当月にし、 8ヶ月前のオプション(たとえそれが昨年であっても)を表示するにはどうしたらよいでしょうか?

例えば、今月は6月がデフォルトで、11月で終わります。

解決方法は?

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

カスタム月名の代替となるもの。

$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);

このような月の配列をドロップダウンで出力するのは、次のように簡単である。

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