2010-10-25 71 views
0

我想打印在PHP的8X8格任何人都可以查看这些代码我做的,而不是<=不对劲PHP ::我想打印8X8格

 $row = 0; 
    $col = 0; 

    print "<form>"; 
    while ($row <= 8){ 
     print "<tr>"; 
    $row++; 

    while ($col <= 8){ 
    print "<td>"; 
    print "<input type="checkbox" name="battle" value="ships">"; 
    print "</td>"; 
    $col++; 

    } 


    print "</tr>"; 
    ) 
    print "</form>"; 
+2

SO上的语法突出显示了三个解析错误。如果你没有在PHP中看到它们,请将'error_reporting(E_ALL);'添加到文件的顶部。 – 2010-10-25 22:24:31

+0

另外,任何优秀的编辑器都会提供语法突出显示功能,这会使任何语法错误更加明显。 – JAL 2010-10-25 22:35:34

+0

for循环将允许您初始化,控制和增加$ row,$ col在一个点上。对于这个代码,它会比while循环更好。 – 2010-10-25 22:45:43

回答

0

使用while($row < 8)while($col < 8)( ),否则你将会打印一张9x9的表格。

使用单引号为checkbox,battleships。如果在内部使用双引号,则外部引号会将表达式视为"<input type=" , checkbox, " name=", battle, " value=", ships, ">"(语法错误)。

对于语法问题,它有助于使用IDE - 在浏览器中的好的一个是ideone.com。您可以启用语法高亮显示。

0

几个问题..一对夫妇伸出:

您正在使用的条件$col <= 8。如果你的值从0开始,这将迭代9次,因为0到8是9个数字。当使用基数0并有限地计数时,总是只使用<(小于)你的最大值,这基本上使得你的结局数字减少一个,弥补了0基数。

您最后的右括号应该是右大括号。您使用{开始while,因此您需要使用}而不是)来完成。

2
$out = "<tr>"; 
for($i = 0; $i < 8*8; $i++){ 

    if($i && $i % 8 == 0) 
     $out .= "</tr><tr>"; 

    $out .= "<td>..</td>"; 
} 
$out .= "</tr>"; 

echo $out; 
+0

@hgbso您在使用打印时犯了性能错误,我使用双引号将其制成 – 2010-10-25 22:38:19

+2

对于此特定用例,这是一个更“聪明”的解决方案。它放弃使用两个循环的代码的清晰度(我会使用嵌套for循环,我自己)来获得更好的性能。它并没有回答这个问题的最基本的问题,但是想想如何找到更好的方法来思考问题,这是一个很好的练习。 – 2010-10-25 22:44:28

1

几个错误。正确的代码应该如下:

$row = 0; 
print "<form>"; 
print "<table>"; 
while ($row < 8){ // Counts to 8. (from 0...7 = 8 times. 0 ... 8 = 9 times) 
    print "<tr>"; 
    $row++; 
    $col = 0; // reset column to 0 each time printing one row. 

    while ($col < 8){ 
    print "<td>"; 
    print "<input type=\"checkbox\" name=\"battle\" value=\"ships\">"; 
    // Add \ before " otherwise it will treat as the end of the quote. 
    print "</td>"; 
    $col++; 
    } 

    print "</tr>"; 
} 
print "</table>"; 
print "</form>"; 

希望这会有所帮助。

+0

这将是一个'for'循环或两个循环的绝佳选择.... – cHao 2010-10-25 22:44:27

+0

同一个事情可以用while while循环完成。我试图解释他在哪里犯了错误,而不是仅仅给他“代码”。 – tanjir 2010-10-25 22:55:36