我正在用PHP构建日历。
在控制器中,我检测到给定月份的天数,并将该范围设置为数组:daysInMonthArray
。
在视图中,我然后foreach
此数组将每个数字输出到<td>
:
<tr>
<?php
// output the number of days in the month
foreach($this->daysInMonthArray as $days1){
foreach($days1 as $key => $object){
echo "<td>" . $object . "</td>";
}
} ?>
</tr>
我想每8个号码开始一个新的<tr>
,因为一周有7天需要开始一个新行开始新的一周。
我已经尝试用if语句检测输出的剩余部分(如果除以8.如果输出为0则为新行,如果不是则继续)。但是,这不起作用,因为<tr>
标记在php语句之外。
以下答案和评论我已将我的代码更新为:
<tr>
<?php
// output the number of days in the month
foreach($this->daysInMonthArray as $days1){
foreach($days1 as $key => $object){
if($object % 8 == 0){
echo "</tr><tr><td>" . $object . "</td>";
}else {
echo "<td>" . $object . "</td>";
}
}
} ?>
</tr>
除了一个月中的两周之外,这几乎是有效的。它在中间2周内放置8天,但在第一周和最后一周放置7天。
答案 0 :(得分:1)
你已经用以下内容自己回答了这个问题:
这不起作用,因为标签在php语句之外
您必须在循环中获取<tr>
标记。
<?php
$daysInRow = 0;
// output the number of days in the month
foreach($this->daysInMonthArray as $days1)
{
foreach($days1 as $key => $object)
{
if($daysInRow % 7 === 0)
{
echo '<tr>';
}
echo "<td>" . $object . "</td>";
if($daysInRow % 7 === 0)
{
echo '</tr>';
}
if($daysInRow % 7 === 0)
{
$daysInRow = 0;
}
else
{
$daysInRow++;
}
}
}
?>
这是未经测试的代码,可能更简洁,但希望你能得到这个想法。
答案 1 :(得分:0)
您要遇到的一个问题是您将表格嵌套在现有表格中。尝试:
<tr><td>
<?php
// output the number of days in the month
foreach($this->daysInMonthArray as $days1){
echo "<table>";
$dayofweek = 0;
foreach($days1 as $key => $object){
if($dayofweek%7 == 0)
echo "<tr>";
echo "<td>" . $object . "</td>";
if($dayofweek%7 == 0)
echo "</tr>";
$dayofweek++;
}
if($dayofweek%7 != 0) //last tr
echo "</tr>";
echo "</table>";
}
?>
</td></tr>