Php用于循环打印的奇怪行为/循环阵列的一半时间和仅偶数

时间:2017-02-25 05:49:55

标签: php loops for-loop tcpdf

我试图循环22次但是代码只执行11次

for($rn=0; $rn<22; $rn++){
        $html_content .= '
        <tr>
            <td>'.$rn.'</td>
        </tr>';
}

以上代码的输出: 0 2 4 6 8 10 12 14 16 18 20

但我希望所有数字都在1到22之间。仅供参考我在TCPDF类中执行上面的代码。

UPDATE-1 FULL TABLE CODE

$html_content = '
        <style>
            .cellHeader{
                background-color: #1982EA;
                color: #fff;
                padding: 10px 0px 10px 0px;
            }
            .rowHeader{
                background-color: #1982EA;
                color: #fff;
                text-align: center;
            }

            table {
            border:none;
            border-collapse: collapse;
            }

            table td {
            border-left: 1px solid #000;
            border-right: 1px solid #000;
            }

            table td:first-child {
            border-left: none;
            }

            table td:last-child {
            border-right: none;
            }
        </style>
        <table cellpadding="1" border="0" style="border: 1px solid #000;" id="tblData">
            <thead>
                <tr class="rowHeader">
                    <th style="border: 1px solid #000;">ITEM #</th>
                    <th style="border: 1px solid #000;">PATTERN #</th>
                    <th style="border: 1px solid #000;" colspan="4">DESCRIPTION</th>
                    <th style="border: 1px solid #000;">QTY ORD</th>
                    <th style="border: 1px solid #000;">UNIT COST</th>
                    <th style="border: 1px solid #000;">LINE TOTAL</th>
                </tr>
            </thead>
            <tbody> 
    ';

    $sql_po_lns = $conn->query("SELECT po_lines.*, invt_warehouse.* 
        FROM po_lines 
        LEFT JOIN invt_warehouse ON po_lines.item_no = invt_warehouse.item_no 
        WHERE po_lines.po_no = '$impPoNo'") or die("An error occured: ".$conn->error);

    //if(($sql_po_lns->num_rows/31)>);
    while($row_po_lns = $sql_po_lns->fetch_array()){
        $html_content .= '
            <tr>
                <td style="text-align: center; border: none;">'.$row_po_lns['item_no'].'</td>
                <td style="text-align: center;">'.$row_po_lns['style_no'].'</td>
                <td colspan="4" style="white-space: nowrap; overflow: hidden;">'.$row_po_lns['description'].'</td>
                <td style="text-align: center;">'.$row_po_lns['ord_qty'].'</td>
                <td style="text-align: right;">'.formatDollars($row_po_lns['cost']).'</td>
                <td style="text-align: right;">'.formatDollars($row_po_lns['ord_qty']*$row_po_lns['cost']).'</td>
            </tr>
        ';
    }
    $num_of_rows = $sql_po_lns->num_rows;
    $num_of_page = ceil($num_of_rows/31);
    $rows_needed = ($num_of_page*31);
    $blank_rows  = ($rows_needed - $num_of_rows);

    for($rn=0; $rn<22; $rn++){
        $html_content .= '
        <tr>
            <td style="text-align: center; border: none;">'.$rn.'</td>
            <td style="text-align: center;"></td>
            <td colspan="4" style="white-space: nowrap; overflow: hidden;"></td>
            <td style="text-align: center;"></td>
            <td style="text-align: right;></td>
            <td style="text-align: right;"></td>
        </tr>';
    }

    $html_content .= '</tbody></table>';

UPDATE-2问题已解决

问题解决了,实际上问题是<td>循环中第5 for个样式属性的双引号缺失。感谢所有试图解决这个问题的人。

2 个答案:

答案 0 :(得分:1)

尝试以下代码:

$html_content = '<table>';
for($rn=0; $rn<22; $rn++){
    $html_content .= '
        <tr>
            <td>'.$rn.'</td>
        </tr>';

}
$html_content .= '</table>';
echo $html_content;

答案 1 :(得分:0)

代码中的两处更改

<?php 
$html_content = '<table>';
for($rn=0; $rn<=22; $rn++){
    $html_content .= '
    <tr>
        <td>'.$rn.'</td>
    </tr>';
}
echo $html_content."<table>";

&GT;

  • 您忘记打开和关闭表格标记。
  • 您错过了'&gt;'在td
  • 如果要打印到22
  • ,请使用=

感谢!
这将有助于