Estas recorriendo mal los bucle, se está generando celdas por cada uno de tus datos y por eso te sale así. Te hice algunas correcciones y mejoras
simplificalo como más te convenga. Saludos
Código PHP:
Ver original<?php
$sem = array("LU", "MA", "MI", "JU", "VI", "SA", "DO"); $horarios = array('08:00', '09:00', '10:00', '11:00', '12:00'); "17832218<br>,LU,08:00",
"17415885<br>,LU,08:00",
"12345678<br>,MI,10:00",
"12345678<br>,JU,11:00",
"12345678<br>,LU,12:00",
"66666666<br>,DO,10:00");
?>
<h2>Horario</h2>
<table border="6" cellpadding="8" width="600px">
<tr>
<td>HORA</td>
<?php
foreach ($sem as $dia) {
echo "<td>$dia</td>";
}
?>
</tr>
<?php
$x = 0;
foreach ($horarios as $hora) {
echo "<tr>";
echo "<td>$hora</td>";
foreach ($sem as $dia) {
echo "<td>";
foreach ($empaques as $emp) {
if ($dia == $r[1] && $hora == $r[2]) {
echo $r[0];
$x = 1;
}
}
if ($x == 0) {
echo "No hay info";
}
$x = 0;
echo "</td>";
}
echo "</tr>";
}
?>
</table>