Sucede por qué no respetastes las comillas para los tag's de HTML que usas .. Si existen . .debes usarlos . .no puedes omitirlos.
Código PHP:
echo "<input type=\"'hidden\" name=\"nombre_gastos[]\" value=\"".$temp."\">";
Observa que sucede cuando no usas comillas .. tu "value" queda:
<input ..... value=gasto uno >
eso para "HTML" value tiene el valor que encuentra hasta el primer espacio .. a partir de ahí se interpreta como otra propiedad de ese tag HTML .. lo cual no es lo que quieres ni es correcto .. por eso hay que usar comillas. Si usa comillas dobles, usalas .. se escapan con \ delante si las necesitas en una instrucción "echo" que abra y cierre con comillas.
Un saludo,