【发布时间】:2017-10-04 01:03:25
【问题描述】:
我正在用 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 语句之外。
以下答案和 cmets 我已将代码更新为:
<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 天。
【问题讨论】:
-
您写道“这不起作用,因为标签在 php 语句之外”。所以你发现了问题所在。那么将它们放入循环中怎么样?
-
我会尝试一个递增变量,每 7 次迭代重置一次。此外,唯一应该保留在循环之外的标签是表格标签。
标签: php foreach html-table