Certo, perché usi un explode che ti trasforma la variabile in un array per ogni punto.

Esempio:
gatto.cane.jpg -> faccio un explode per ogni punto -> array di tre elementi:
[0] gatto
[1] cane
[2] jpg

Mentre l'altra ha solo due elementi:
gatto.jpg

[0] gatto
[1] jpg

E quindi ti vede l'immagine correttamente, solo perché il nome dell'immagine è corretto.
Capito?