Ciao,
controlla il limite per gli interi:
Codice PHP:
echo PHP_INT_MAX
vedrai che con 2009041301115 vai molto oltre, quindi viene memorizzato come float (puoi verificare anche questo con:
Codice PHP:
var_dump($ora); 
Quando lo utilizzi come indice nell'array viene convertinto nuovamente in int, ma restando nei limiti di memoria per questi, quindi il valore dell'indice sarà diverso.

Una soluzione potrebbe essere quella di usare il dato $ora come stringa:
Codice PHP:
$Array["$ora"] = "Messaggio"
Alessandro