我使用表来存储动态加载的内容。这是一个响应的预订表格。我想要做的是如果有超过5列的话,将每个表格行分成两行,以便移动版本适合屏幕。
我确信这可以通过扩展我已有的但无法使其工作来实现。
这是我目前的代码:
<table>
<tr>
<?php foreach ($hostel->getAvailableDates() as $date): ?>
<th><?php echo $date->getDayOfTheWeek(); ?></th>
<?php endforeach ?>
</tr>
<tr>
<?php foreach ($hostel->getAvailableDates() as $date): ?>
<td>
<?php if($date->getAvailable()) { ?>
<b class="avail tick">Available</b>
<?php } else { ?>
<b class="avail cross">Unavailable</b>
<?php }?>
</td>
<?php endforeach ?>
</tr>
</table>
我需要在5个循环后打破每行tr
的循环,然后在下面添加一个新行。
我一直在试验
$max_loop = 5;
$count = 0;
但到目前为止没有运气。
答案 0 :(得分:0)
查看mod运算符。它应该给你你需要的东西。
if($ count%$ max_loop == 0)
答案 1 :(得分:0)
我更喜欢重组数据:
<?php
$availDates = array();
foreach ($hostel->getAvailableDates() as $date) {
$availDates[] = $date;
}
$maxCols = 5;
$chunked = array_chunk( $availDates, $maxCols );
?>
<table>
<?php
foreach ($chunked as $chunk) {
?><tr>
<?php foreach ($chunk as $date): ?>
<th><?php echo $date->getDayOfTheWeek(); ?></th>
<?php endforeach; ?>
</tr>
<tr>
<?php foreach ($chunk as $date): ?>
<td>
<?php if($date->getAvailable()) { ?>
<b class="avail tick">Available</b>
<?php } else { ?>
<b class="avail cross">Unavailable</b>
<?php }?>
</td>
<?php endforeach; ?>
</tr><?php
}
?>
</table>
答案 2 :(得分:0)
如果getAvailableDates返回的值是一个数组,则可以使用for循环而不是foreach,并检查当前索引是否为5的倍数,因此您不必跟踪计数变量< / p>
$avDates = $hostel->getAvailableDates();
for ($i = 0; $i < count($avDates); $i++) {
$date = $avDates[$i];
//do your staff
//if multiple of five add another tr
if ($i % 5 == 0) {
}
}
答案 3 :(得分:0)
我希望这对你有帮助。感谢。
<?php
$avDates = $hostel->getAvailableDates();
echo "<table><tr>";
foreach($avDates as $i=>$date){ {
if ($i == $max_loop) {
echo "</tr><tr>";
}
echo "<td>".($date->getAvailable() ? '<b class="avail tick">Available</b>' : '<b class="avail cross">Unavailable</b>')."</td>";
}
echo "</tr></table>";
?>