PHP - 切换变量值自动增量在一段时间内意外工作

希望你能帮助我解决这个问题...所以基本上,我正在一个 While 内测试一个开关,它循环并比较值(一旦某个值达到限制 $numRow,while 结束并停止执行其余代码) 。


我的代码如下:


    <?php


$n = 0;

$i = 0;

$numRows = 4;


while ($n <= $numRows){

    switch($i++){

        case 1:

            if($i == $numRows){

                echo 'Case 1:La variable i ='.$i.' es igual a la cantidad de columnas n='.$n."<br/>"; 

                

            } else {

                echo 'Case 1: La variable i ='.$i.' es diferente a la cantidad de columnas n='.$n."<br/>";   

            }

            break;

        case 2:

            if($i == $numRows){

                echo 'Case 2:La variable i ='.$i.' es igual a la cantidad de columnas n='.$n."<br/>";   

            } else {

                echo 'Case 2:La variable i ='.$i.' es diferente a la cantidad de columnas n='.$n."<br/>";   

            }

            break;

        case 3:

            if($i == $numRows){

                echo 'Case 3:La variable i ='.$i.' es igual a la cantidad de columnas n='.$n."<br/>";   

            } else {

                echo 'Case 3:La variable i ='.$i.' es diferente a la cantidad de columnas n='.$n."<br/>";   

            }

            break;

        case 4:

            if($i == $numRows){

                echo 'Case4:La variable i ='.$i.' es igual a la cantidad de columnas n='.$n."<br/>";   

            } else {

                echo 'Case 4:La variable i ='.$i.' es diferente a la cantidad de columnas n='.$n."<br/>";   

            }


   

我觉得奇怪的是代码的输出。变量 $I 应该从 1 开始,但在情况 1 中它的值为 2...这可能吗?代码中没有其他操作对变量求和 +1...


输出:


1Case 1: La variable i =2 es diferente a la cantidad de columnas n=1

2Case 2:La variable i =3 es diferente a la cantidad de columnas n=2

3Case 3:La variable i =4 es igual a la cantidad de columnas n=3

4Case 4:La variable i =5 es diferente a la cantidad de columnas n=4

5

是否有任何拼写错误或我在语法上做错了什么?我正在学习 PHP 作为一种爱好,所以想了解这里是否有任何新手错误:)


萧十郎
浏览 136回答 2
2回答

吃鸡游戏

使用预增量:++$i而不是$i++:switch(++$i){//...}发生的情况是,当您进行后增量 ( $i++) 时,变量不会立即采用新值。仅当您再次使用该变量时,它才会采用新值。所以当你在开关上增量时$i仍然是1。然后在 中case: 1,当您使用该变量时,会发生实际的增量,并且显示 2 而不是 1。这与执行以下操作完全相同:$++;switch($i){//...}

万千封印

如果你想在每个循环中增加 $i ,最好$i++ switch($i){
打开App,查看更多内容
随时随地看视频慕课网APP