Ne convengo che il comportamento di taluni mi ha già invogliato a frequentare (poco) questo forum; a parte questo episodio nello specifico: magari bruno non aveva tempo.

La proposta in PHP non funzionerà se non chiudi la riga di echo col ' e col ;
come pure, per ottenere stampato nell' id il numero progressivo dinamico, dovremo far uso del dot di concatenazione, altrimenti semplicemente ci ritroveremo id="txt_$i" tal quale uguale per tutti.

codice:
<?php
for($i=0; $i < 10; $i++){
echo '<input type="text" id="txt_' . $i . '">
';
};
?>
&#200; l' echo introdotto con gli apici doppi che, eventualmente consente la collazione; le variabili cioè, vengono interpretate comunque, con o senza dot:
echo "<input type='text' id='txt_$i'>
";



Quanto all' esempio in JavaScript, valido come traccia di partenza, reitera però per lunghezza volte l' assegnazione del medesimo contenuto innerHTML al DIV che si ritroverà con un soloTag INPUT.
Le reiterazioni del ciclo for si devono assommare nella variabile.
L' operatore + può entrare in gioco in diversi modi:

document.getElementById("id_del_div").innerHTML = document.getElementById("id_del_div").innerHTML + "<input type='text'>
";

o
document.getElementById("id_del_div").innerHTML += "<input type='text'>
";


Questo funziona; editare il Valore di var lunghezza :
codice:
<html><body>

<div id="id_del_div"></div>

<script type="text/javascript">

    var lunghezza = 10;

for(i=0;i<lunghezza;i++){
 document.getElementById("id_del_div").innerHTML += '<input type=text id="txt_' + i + '" onclick="alert(this.id);">
';
}

</script>

</body></html>
P.S.: Come prima in PHP col punto, ora in JavaScript è il segno + che usiamo per la concatenazione ( variabile + variabile o 'stringa' + variabile ), che assume quindi una doppia valenza: operatore numerico e di concatenazione.