Select元素的PHP数据保留 - 寻找优雅的解决方案

Basically, my form will POST to itself upon submit however, I would want the users' selected values to remain in case of any error output.

I know how to do this for most form elements however, I'm stumped when it comes to using select.

Here's my current solution, I'm looking for something more elegant, help?

 <select name="birthday_month" id="dob_month" label="Month" class="" >
  <option value="-1">M</option>
  <option value="1" <?php if(isset($_POST['birthday_month']) && 1 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Jan</option>
  <option value="2" <?php if(isset($_POST['birthday_month']) && 2 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Feb</option>
  <option value="3" <?php if(isset($_POST['birthday_month']) && 3 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Mar</option>
  <option value="4" <?php if(isset($_POST['birthday_month']) && 4 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Apr</option>
  <option value="5" <?php if(isset($_POST['birthday_month']) && 5 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>May</option>
  <option value="6" <?php if(isset($_POST['birthday_month']) && 6 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Jun</option>
   <option value="7" <?php if(isset($_POST['birthday_month']) && 7 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Jul</option>
   <option value="8" <?php if(isset($_POST['birthday_month']) && 8 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Aug</option>
   <option value="9" <?php if(isset($_POST['birthday_month']) && 9 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Sep</option>
   <option value="10" <?php if(isset($_POST['birthday_month']) && 10 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Oct</option>
   <option value="11" <?php if(isset($_POST['birthday_month']) && 11 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Nov</option>
   <option value="12" <?php if(isset($_POST['birthday_month']) && 12 == $_POST['birthday_month']){ echo "selected='selected'";} ?>>Dec</option>
      </select>

Use a loop to create your <option>s.

Day

for ($i=1;$i<=31;$i++) {
  echo "<option value='$i'";
  if ($_POST['birthday_day'] == $i) {
    echo " selected='selected'";
  }
  echo ">$i</option>";
}

Month

for ($i=1;$i<=12;$i++) {
  echo "<option value='$i'";
  if ($_POST['birthday_month'] == $i) {
    echo " selected='selected'";
  }
  echo ">".date("M",mktime(0, 0, 0, $i, 1))."</option>";
}