【问题标题】:strange behavior of Php for loop prints/loop half times of the array and only even numbers [closed]Php for loop 的奇怪行为打印/循环数组的一半时间,只有偶数[关闭]
【发布时间】:2017-02-25 05:49:55
【问题描述】:

我尝试循环 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 完整表代码

$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 问题已解决

问题已解决,实际上问题是for 循环内第5 个&lt;td&gt; 的样式属性缺少双引号。感谢所有试图解决这个问题的人。

【问题讨论】:

  • 关闭td标签:&lt;td'
  • 从我这边来看它仍然可以正常工作。 :)
  • 问题已解决,实际上问题是在for 循环中缺少第5 个&lt;td&gt; 样式属性的双引号。感谢所有试图解决这个问题的人。

标签: php loops for-loop tcpdf


【解决方案1】:

试试下面的代码:

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

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

【讨论】:

  • 标签已经存在我只是在 for 循环中显示了导致问题的代码。
  • @MuhammadTarique 然后你只需要关闭你的
  • 就像&lt;td&gt;'.$rn.'&lt;/td&gt;
  • 那你能写更多的PHP代码吗?因为在我的最后,它正在查找,我可以看到表格中的所有 22 个数字。
  • 好的,我正在更新我的完整表格代码
  • 太好了,会很有帮助的。
【解决方案2】:

你的代码有两个变化

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

?>

  • 您忘记打开和关闭表格标记。
  • td 中缺少“>”。
  • 如果你想打印到 22 的号码,你可以使用=

谢谢!
这会有所帮助

【讨论】:

  • 问题已解决,实际上问题是在for 循环中缺少第5 个&lt;td&gt; 样式属性的双引号。感谢所有试图解决这个问题的人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多