El problema radica en que tu for() siempre espera que existan 5 elementos, pero resulta que no es así, pues el error te indica que estás tratando de leer un índice que no existe.
En dado caso es mejor usar foreach() para no tener que especificar un cantidad máxima de elementos inexistentes, o establecer dicho límite usando count() sobre el array a iterar.
¿Se entiende?
PDTA: la linea donde tienes el explode() es inútil porque no se está asignando a ninguna variable, por lo tanto lo que devuelve la función no es un array sino un string, resultado de asignar implode() a $cadena, consulta el manual.