PHP——很难理解为什么会重复某个值。任务是否可以在if中进行,并在else中执行?

PHP——很难理解为什么会重复某个值。任务是否可以在if中进行,并在else中执行?,php,Php,大家好! 请原谅我的无知,我对php太陌生了 我很难理解为什么php代码会以这种方式运行。 代码正在运行,但我不知道为什么这些值会得到响应 为了便于解释,代码已被简化,但它通常会根据自定义的列数填充并格式化一个表 问题*** 参见代码 为什么变量$cell echo会看到:??????问题:1234567? 我期望0 1 2 3 4 5 6//因为我认为它的起点是$cell=0,正如在开始时分配的那样。唯一合理的原因是它从for循环的$cell+=$i继承了它的值,但是当情况为$col=2时,第

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

我很难理解为什么php代码会以这种方式运行。 代码正在运行,但我不知道为什么这些值会得到响应

为了便于解释,代码已被简化,但它通常会根据自定义的列数填充并格式化一个表

问题*** 参见代码

为什么变量$cell echo会看到:??????问题:1234567? 我期望0 1 2 3 4 5 6//因为我认为它的起点是$cell=0,正如在开始时分配的那样。唯一合理的原因是它从for循环的$cell+=$i继承了它的值,但是当情况为$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>";
}
?>

任何帮助都将不胜感激

在内部for循环的第一次迭代中,当$col==1时,$cell递增1。当$col不是1时,在本例中唯一可能的其他值是2,那么您已经将$cell的值增加了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...

在内部for循环的第一次迭代中,当$col==1时,$cell递增1。当$col不是1时,在本例中唯一可能的其他值是2,那么您已经将$cell的值增加了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...

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

为什么$cell echo 1 2 3 4 5 6 7而不是0 1 2 3 4 5 6在第二个for循环中仅增加$cell,并在第一个for循环中设置回0:

真正发生的是:

用于循环1

=>$cell=0;//$单元格设置为零

循环2

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

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

之所以$cell echo 1 2 3 4 5 6 7而不是0 1 2 3 4 5 6,是因为在第二个for循环中仅增加$cell,而在第一个for循环中设置回0:

真正发生的是:

用于循环1

=>$cell=0;//$单元格设置为零

循环2

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


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

你为什么写这么复杂的循环交互?只需逐字使用两个输出块,而不是$col和if$col。-关于您的问题标题,PHPs变量范围就是这样工作的。您正在if和else中访问同一个变量。因为他是编程新手……所以if循环中的$cell+=$i在if条件为false时不会丢失/忽略,它只在代码的其余部分传递其值。对吧?你为什么写这么复杂的循环交互?只需逐字使用两个输出块,而不是$col和if$col。-关于您的问题标题,PHPs变量范围就是这样工作的。您正在if和else中访问同一个变量。因为他是编程新手……所以if循环中的$cell+=$i在if条件为false时不会丢失/忽略,它只在代码的其余部分传递其值。对吗?那是错误的-它会回零。首先:$cell=0和$col=1,如果$col==1,则回显$cell。当然,但我指的是问题本身:请看??????问题:1234567?我原以为0 1 2 3 4 5 6这是错误的-它将回显0。首先:$cell=0和$col=1,如果$col==1,则回显$cell。当然,但我指的是问题本身:请看??????问题:1234567?我期待您的详细解释,谢谢!因此,当条件$col==1为false时,$cell+=$i不会丢失。它只是在代码的其余部分传递它的值。我说得对吗?是的,没错。原因是$cell+=$i;与$cell=$cell+$i;相同;,因此,您要做的是更改$cell变量的值。感谢您的详细解释!因此,当条件$col==1为false时,$cell+=$i不会丢失。它只是在代码的其余部分传递它的值。我说得对吗?是的,没错。原因是$cell+=$i;与$cell=$cell+$i;相同;,所以你正在做的是改变 $cell变量的值。