Supongo que cuando intentas asignar
$fila = fgets($fp) en la última iteración del ciclo te devuelve falso y, por tanto,
$arreglo_datos no contiene elementos.
Revisa el manual de la función
fgets()
Solución? cambia la condición del while:
Código PHP:
Ver originalwhile( ($fila = fgets($fp)) !== false) { // Explode, echo, etc.
}