Mejoramos el código
Puede parecer innecesario, pero es muy importante acordarse siempre de reiniciar las variables antes de reusarlas, incluso cuando alguna de ellas es reutilizada en un espacio de nombres completamente diferente. Esta precaución puede ahorrarnos cantidades de tiempo significativas cuando tengamos que buscar errores en el código.
Igualmente, siempre es buena idea hacer orden y vaciar los arrays de ficheros y directorios antes de usarlos.
Una vez realizadas estas acciones podemos dedicarnos a observar objetivamente nuestro código: ¿en qué lugares pueden aparecer problemas? ¿Qué pasará si por ejemplo en un directorio no hay ningún fichero ni subdirectorio? Dos pequeños condicionales nos permitirán evitar sorpresas desagradables:
if(is_array($sdirs))
{
...
}
if(is_array($sfiles))
{
...
}