Perché lo trasforma in intero, quindi 01 -> 1.
Una soluzione è far così:
Codice PHP:
for($i=1;$i<32;$i++){
$str = $i<10?'0'.$i:$i;
echo "<option value=\"" . $str . "\">" . $str . "</option>\n";
}
Ho usato un'altra variabile perché non mi piace molto trasformare $i in stringa per poi incrementare una stringa (nel for).
Se proprio non vuoi usare un'altra variabile, un modo è far così:
Codice PHP:
for($i=1;$i<32;$i++){
echo "<option value=\"" . $i<10?'0'.$i:$i; . "\">" . $i<10?'0'.$i:$i; . "</option>\n";
}
Però impiega più tempo di elaborazione (ovviamente trascurabile).
Ciao!