Per il giorno e per l'anno non c'è bisogno di usare array ma se la select relativa al mese vuoi che li visualizzi in italiano credo che la soluzione migliore sia proprio quella di ricorrere ad un array.
Altrimenti dovresti fare una serie di if del tipo se il mese è 1 allora visualizza gennaio, se 2 visualizza febbraio, ecc.
Non so quanto ti converrebbe.


<form name="data">
<select name="giorno">
Codice PHP:
<?php
$giorno 
date("j");
for (
$i=1$i<=31$i++)
{
 if (
$i == $giorno)
 echo 
"<option value=\"$i\" selected>$i </option>";
 else
 echo 
"<option value=\"$i\">$i </option>";
}

$mesi = array (=> "Gennaio",
            
"Febbraio",
                
"Marzo",
            
"Aprile",
            
"Maggio",
            
"Giugno",
            
"Luglio",
            
"Agosto",
            
"Settembre",
            
"Ottobre",
            
"Novembre",
            
"Dicembre");
?>
</select>
<select name="mese">
Codice PHP:
<?php                    
$mese 
date("n");
for (
$i=1$i<=12$i++)
{
 if (
$i == $mese)
 echo 
"<option value=\"$mesi[$i]\" selected>$mesi[$i]</option>";
 else
 echo 
"<option value=\"$mesi[$i]\">$mesi[$i]</option>";
}                    
?>
</select>
<select name="anno">
Codice PHP:
<?php
$anno 
date("Y");
for (
$i=2005$i<=2015$i++)
{
 if (
$i == $anno)
 echo 
"<option value=\"$i\" selected>$i</option>";
 else
 echo 
"<option value=\"$i\">$i</option>";
}            
?>
</select>
</form>