php foreach中断表

php foreach中断表,php,foreach,tablerow,Php,Foreach,Tablerow,Im使用表来存储动态加载的内容。这是一个预订表,这将是响应。我想做的是,如果有超过5列,将每个表行分成两行,以便移动版本能够在屏幕上显示 我相信这可以通过扩展我已经拥有但无法实现的功能来实现 以下是我当前的代码: <table> <tr> <?php foreach ($hostel->getAvailableDates() as $date): ?> <th><?php echo $date-&

Im使用表来存储动态加载的内容。这是一个预订表,这将是响应。我想做的是,如果有超过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>

但是到目前为止运气不好。

看看mod操作符。它会给你你需要的


如果($count%$max\u loop==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>

可用
不可用的

如果getAvailableDates返回的值是数组,则可以使用for循环而不是foreach,并检查当前索引是否为5的倍数,这样就不必跟踪count变量

$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) {

     }
}
$avDates=$hostel->getAvailableDates();
对于($i=0;$i
我希望这对您有所帮助。谢谢

    <?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>";
?>

    <?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>";
?>