PHP - 很难理解为什么某个值会被回显.赋值是否可以在if内部执行并在else中执行?

Sev*_*tic 1 php

Hy给大家!请原谅我的无知,我是php的新手.

我很难理解为什么php代码会以这种方式运行.代码正在运行,但我对于为什么回显这些值非常无能为力.

(代码已经过简化以便解释,但它通常会根据自定义的列数填充和格式化表格)

问题***(见代码)

为什么变量$cell回波(参见:???????问题?????):1 2 3 4 5 6 7?我期待0 1 2 3 4 5 6 //因为我认为它的起点是$ cell = 0,正如在开始时分配的那样.唯一合理的理由是它从$ cell + = $ i(来自for循环)继承了它的值,但是当大小写为$ 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>";
}
?>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

jua*_*rro 5

在内for循环的第一次迭代中,当然$col==1后$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...
Run Code Online (Sandbox Code Playgroud)