1

大家好!请原谅我的无知,我对php很陌生。

我很难理解为什么 php 代码会以这种方式运行。该代码正在运行,但我对为什么会回显这些值一无所知。

(出于解释目的,代码已被简化,但它通常会根据自定义列数填充和格式化表格)

问题 * **(见代码)

为什么变量$cell回显(参见:??????问题??????):1 2 3 4 5 6 7?我期待 0 1 2 3 4 5 6 // 因为我认为它的起点是 $cell = 0,就像在开始时分配的那样。唯一合理的原因是它从 $cell +=$i (从 for 循环)继承了它的值,但是当 case 是 $col=2 时,不是第一个语句完全跳过并且只执行了 else 语句吗?

<?php
for ($i=1; $i <= 7 ; $i++)  {
    $cell = 0;
    echo "<tr>";

    for ($col=1; $col <= 2; $col++) {
        echo "<td>" ;
        if ($col == 1) {
            echo $cell; // echoes: 0 0 0 0 0 0 0 ----> because $cell = 0
            $cell +=$i;
            echo $cell; // echoes: 1 2 3 4 5 6 7  ----> because of  $cell +=$i;
        } else {
            echo $cell ; // echoes: 1 2 3 4 5 6 7    ?????? QUESTION ?????
            $cell +=7;
            echo $cell; // echoes: 8 9 10 11 12 13 14
        }
        echo "</td>";
    }
    echo "</tr>";
}
?>

任何帮助将不胜感激。

4

3 回答 3

5

在内部for循环的第一次迭代中,当$col==1then$cell增加 1。当$col不是1(在这种情况下唯一可能的值是2),那么你已经增加了$cellby的值1,因此它不再是0

所以你有了:

i = 1 | $cell = 0 | $col = 1 // $cell +=$i; => $cell += 1; => $cell = 1;
i = 1 | $cell = 1 | $col = 2 // $cell += 7; => $cell = 8;
i = 2 | $cell = 0 | $col = 1 // $cell +=$i; => $cell += 2; => $cell = 2;
i = 2 | $cell = 2 | $col = 2 // $cell += 7; => $cell = 9;
// etc...
于 2012-11-15T00:30:17.383 回答
0

$cellecho1 2 3 4 5 6 7而不是0 1 2 3 4 5 6$cell在您的第二个 for 循环中增加,并在您的第一个 for 循环中设置回 0 的原因:

真正发生的是:

循环1

=> $cell = 0;// $cell 设置为零

循环2

=> $cell += $i;// $cell 增加 1
=> $cell += 7;// $cell 增加 7

在这种情况下, $cell 为零只会发生在第一个 for 循环中,或者如果您在增量之前回显它。

于 2012-11-15T00:48:13.387 回答
0

$cell 永远不会回显 0 因为当第二个 for 循环开始时 $col 将等于 1 因此 $cell 将是 $cell += $i 它总是会给你 $cell == 1 因为 $i == 1 当代码开始运行。希望这有帮助

于 2012-11-15T00:36:52.030 回答