creo que ya entiendo tu problema...
la función
file() devuelve un arreglo, separando las filas por salto de linea... de modo que ya no necesitas usar
explode()
ese es el primero paso a seguir, iterar solamente el resultado de
file() e imprimirlo para que analices de nuevo la estructura lógica...