el foreach no es mas que un bucle, como un for o un while,
y lo que hace simplemente es recorrer un array y pasarles los valores del indice a la primera variable $clave( que puede ser el nombre que quieras) y el valor de este indice al $valor (que tb puede ser el nombre que quieras)
Y el segundo array funciona cuando detecta que el campo es un array de ahi la la funcion if(is_array($valor) ejecuta el segundo foreach
para informacion mas completa te remito al maual de php
http://es.php.net/foreach
un saludo