El código tiene varios errores: si tu por ejemplo imprimes el valor de la variable calendario con var_dump te vas a dar cuenta que siempre devuelve el mismo día de la semana, esto es porque estás usando strtotime en una variable que se supone ya está en formato time (Unix):
$diasemana = date( 'w', strtotime($i) );
Déjalo así:
$diasemana = date( 'w', $i );
Si observas también la variable $semana nunca aumenta porque estás haciendo mal la comparación:
No existe el día 7 porque date devuelve máximo hasta 6. Debería quedar así:
Y por ultimo para mostrar la tabla con las fechas tienes que cambiar el código porque primero tienes que saber a qué día de la semana corresponde el primer valor del array y después añadirlo en la tabla a nivel de ese día, porque así como tienes el código va a empezar siempre por lunes sin importar si la fecha corresponde a un jueves por ejemplo.
Mas o menos así debería quedar el código, pero debes arreglar lo que te dije al final:
Código PHP:
Ver original<?php
$semana=1;
/* avanzamos de a 1 dia; 1 dia ? 86400 segundos */
for($i=$fechaInicio; $i<=$fechaFin; $i+=86400){
/* obtenemos el dia de semana como numero; Domingo = 0, Lunes = 1... Sabado = 6 */
$diasemana = date( 'w', $i );
/* solo agregamos los dias Lunes, Martes, Miercoles, Jueves y Viernes */
if(($diasemana >= 1) && ($diasemana <=5 ))
{
/* obtenemos el calendario en formato numerico STR, [Semana] [Dia Semana] = Fecha */
$calendario[ $semana ][ $diasemana ] = $i;
}
/* imprimir fechas hacia abajo, en formato dia-mes-año */
//echo date('d/m/Y',$calendario[$semana][$diasemana]). "<br>";
/* aumentamos la cantidad de semanas */
if($diasemana == 6){
$semana++;
}
}
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<table border="1">
<thead>
<tr>
<td>Lunes</td>
<td>Martes</td>
<td>Miércoles</td>
<td>Jueves</td>
<td>Viernes</td>
</tr>
</thead>
<tbody>
<?php
for($i = 1; $i <= count($calendario); $i++) {
echo "<tr>";
$num = count($calendario[$i]); for ($n = 1; $n <= $num; $n++)
{
echo "<td>";
echo date("d/m/Y",$calendario[$i][$n]); echo "</td>";
}
echo "</tr>";
}
?>
</tbody>
</table>
</body>
</html>