8个结果后继续循环 - 分成全新表

时间:2016-05-12 09:09:51

标签: php html

我需要更改我的代码以显示包含8个结果的1个表,停止,然后生成另一个结果编号为9及以上的全新表。

我已经知道休息;并继续;可能是有用的,但我应该如何将整个表格包裹在foreach循环中,并防止它显示8个以上我不知道的表格。

我确定HEADER计数超过8列。在这个例子中有9个标题。 包括第一个空白。

enter image description here

<?php

$table3 = get_field( 'bottom_chart' );

if ( $table3 ) {

    if($table3['header']) {
        $theader3 = 1;
        foreach ( $table3['header'] as $th1 ) {
            //echo $theader3;
            $theader3++;
        }
    }

    echo '<table border="0" class="mytable">';

        if ( $table3['header'] ) {

            echo '<thead>';

                echo '<tr>';

                    foreach ( $table3['header'] as $t3 ) {

                        echo '<th class="tdtitle">';
                            echo $t3['c'];
                        echo '</th>';
                    }

                echo '</tr>';

            echo '</thead>';
        }

        echo '<tbody>';

            $first_td_bottomchart = 0;

            foreach ( $table3['body'] as $tr3 ) {

                echo '<tr>';

                    foreach ( $tr3 as $td3 ) {

                        if(($first_td_bottomchart %8) == 0) {
                            echo '<td class="lefttitle bold tdtitle">' . $td3['c'] . '</td>';
                        } elseif(!empty($td3['c'])) {
                            echo '<td rowspan="4">';
                                echo '<div class="progress progress-striped"><div class="bottom_chart progress-bar progress-bar-danger" role="progressbar" aria-valuenow="' . $td3['c'] . '" aria-valuemin="0" aria-valuemax="100" style="width: 0%"></div></div>';
                                echo $td3['c'];
                            echo '</td>';
                        }
                        $first_td_bottomchart++;
                    } ?>

                <?php echo '</tr>';

            }

        echo '</tbody>';

    echo '</table>';

}

?>

1 个答案:

答案 0 :(得分:1)

好的,如果我们假设$ table3 ['body']与$ table3 ['header']具有相同的元素数,那么你的代码基本上会开始构建表头,但是当我们第一次到达body时你创建了8个循环 rowspans?

这不应该是colspans吗? https://plnkr.co/edit/B31QPDamCDHiQANAYpdx?p=preview

<table width="100%" border="1" cellspacing="0" cellpadding="0">
<thead>
        <th>1 Rowspan Table</th>
        <th>2</th>
        <th>3</th>
        <th>4</th>
        <th>5</th>
        <th>6</th>
        <th>7</th>
        <th>8</th>
        <th>9</th>
  </thead>
<tbody>
<!-- **Invalid table structure and markup:** -->
<tr>
  <td class="lefttitle bold tdtitle">$td3['c']</td>
  <td rowspan="4">&nbsp;</td>
  <td rowspan="4">&nbsp;</td>
  <td rowspan="4">&nbsp;</td>
  <td rowspan="4">&nbsp;</td>
  <td rowspan="4">&nbsp;</td>
  <td rowspan="4">&nbsp;</td>
  <td rowspan="4">&nbsp;</td>
</tr>
<!-- **VALID table structure and markup:** -->
<tr>
  <td class="lefttitle bold tdtitle">$td3['c']</td>
  <td colspan="4">&nbsp;</td>
  <td colspan="4">&nbsp;</td>
</tr>

同样在%8之后,同一行继续使用rowspan,具体取决于$ tr3中的元素数量为$ td3。 (如果这与$ table3 ['header']中的元素数量一致;)

另一个问题是,如果由于某种原因$ td3 ['c']为空,整个表结构都会被抛出窗口。

您依靠太多未知变量来为自己构建表结构。

我只会循环遍历$ table3 ['header']一次,并在此循环中构建表逻辑,以防止混淆和元素计数不匹配。

目前还不清楚哪些细胞要跨越哪些细胞:您能否在Excel表格中合并您想要的细胞作为示例,并将其与您的问题相关联。然后我可以为您提供更简单的解决方案。