php函数列出下拉列表的月份

I have this function

function bookingMonthField() {
$str="";
        for($i = 0; $i < 16; $i++) {
        $time = mktime(0, 0, 0, date('n') + $i);
        $str .="<option value=" . date('Yn', $time) . ">" . date('M Y', $time) . "</option>";   
    }
  return $str;
  }

Which works (almost) as it should, except it is returning no Feb and 2x March:

<option value="20119">Sep 2011</option>
<option value="201110">Oct 2011</option>
<option value="201111">Nov 2011</option>
<option value="201112">Dec 2011</option>
<option value="20121">Jan 2012</option>
<option value="20123">Mar 2012</option>
<option value="20123">Mar 2012</option>
<option value="20124">Apr 2012</option>
<option value="20125">May 2012</option>
<option value="20126">Jun 2012</option>
<option value="20127">Jul 2012</option>
<option value="20128">Aug 2012</option>
<option value="20129">Sep 2012</option>
<option value="201210">Oct 2012</option>
<option value="201211">Nov 2012</option>
<option value="201212">Dec 2012</option>

ANy ideas why this is happening?

Just tell your script, you want the first of the month:

$time = mktime(0, 0, 0, date('n') + $i, 1);

Or wait another day, then your website is automatically fixed :)

mktime will use the current day if none is provided. Today is the 29th, so February is skipped. Instead, specify "1" for the day.