Scusa ancora se chiedo il tuo intervento, ma testando il codice ho notato che se io carico un file solo con la seconda file input mi restituisce il nome del file sulla prima variabile.

C'è un modo per scorrere l'array e prendere i dati dalle singole input e attribuirli a due variabili distinte a prescindere che il file venga caricato o meno, magari attribuendo un null?

Se facessi una form così, poi posso recuperare i dati dall'array attribuendo a ciascuno il valore restituito dal form, a prescindere che questo abbia o no un valore?
codice:
<input type="file" name="file[img]" />
<input type="file" name="file[attach]" />