Holas, andrescev.
Lo que intentas hacer se parece a un horario de clases que tuve que programar en mi trabajo. No sé si te servirá para lo que necesitas, o si es totalmente necesario que lo hagas con los buclés que están compartiendo entre tú y quimfv.
Como lo hice yo, lo del calendario con datos no regulares dentro, fue hacer el calendario con arrays, igual que tú, pero luego el contenido, el recibido por base de datos, lo recibo en un array multidimensional, de modo que cada key del mismo me sirva de coordenada, y así, acceder a la posición exacta en el array, según la posición que me encuentre dentro del ciclo que arma al calendario. Con esto no necesitas recorrer otro array cada vez, sólo acceder directo a la posición: si no existe, imprimes el valor por defecto en la celda.
Algo como esto (ultra simplificado):
Código PHP:
<?php
// columnas:
$dias = array();
$dias["L"] = "LUNES";
// etc...
// filas:
$profesionales = array();
$profesionales[0] = "juanito"; // esto lo sacas de bbdd, no?
// etc...
// obteniendo tareas realizadas de profesionales desde bbdd
$tareas = array();
// acá ejecutas la consulta a la bbdd y la guardas en la forma:
while ($fila = mysql_fetch_assoc($result))
{
$tareas[$fila["id_profesional"]][$fila["dia"]] = $fila["valor"];
}
// y luego, armando y recorriendo el calendario;
?>
<table>
<?php
// aca va el encabezado...
// y aca el contenido:
foreach ($profesionales as $prof)
{
?>
<tr>
<td><?php print $prof; ?></td>
<?php
foreach ($dias as $dia)
{
?><td><?php
print (isset($tareas[$prof][$dia]) ? $tareas[$prof][$dia]: "N");
?><td><?php
}
?>
</tr>
<?php
}
?>
</table>
Saludos!