J'espère que vous pourrez m'aider avec celui-ci ... Donc, fondamentalement, je teste un commutateur dans un While, qui boucle et compare les valeurs (une fois qu'une certaine valeur atteint la limite $ numRow, le while se termine et cesse d'exécuter le reste du code) .

Mon code ci-dessous:

    <?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/>";   
            }
            break;
        case 5:
            if($i == $numRows){
                echo 'Case 5:La variable i ='.$i.' es igual a la cantidad de columnas n='.$n."<br/>";   
            } else {
                echo 'Case 5: La variable i ='.$i.' es diferente a la cantidad de columnas n='.$n."<br/>";   
            }
            break;
    }
    $n++;
    echo $n;
}
    

Ce qui me semble bizarre, c'est la sortie du code. Variable $ Je devrais commencer à 1, mais à la place dans le cas 1, elle prend la valeur de 2 ... est-ce encore possible? Il n'y a pas d'autre opération dans le code qui additionne +1 à la variable ...

Production:

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

Y a-t-il une faute de frappe ou quelque chose que je fais mal avec la syntaxe? J'apprends PHP comme passe-temps, alors j'aimerais comprendre s'il y a une erreur de novice ici :)

Merci d'avance!

-1
Andres Varela 29 août 2020 à 21:18

2 réponses

Meilleure réponse

Utilisez la pré-incrémentation: ++$i au lieu de $i++:

switch(++$i){
//...
}

Ce qui se passe, c'est lorsque vous post-incrémentez ($i++), la variable ne prend pas la nouvelle valeur immédiatement. Il prend la nouvelle valeur uniquement lorsque vous utilisez à nouveau la variable. Ainsi, lorsque vous incrémentez le commutateur, $i est toujours 1. Ensuite, dans le case: 1, lorsque vous utilisez la variable, l'incrémentation réelle se produit et il affiche 2 au lieu de 1.

Ce sera exactement la même chose que de faire:

$++;
switch($i){
//...
}

Pour en savoir plus, cliquez ici.

-1
Prince Dorcis 29 août 2020 à 18:30

Si vous voulez incrémenter $ i chaque boucle, mieux vaut

$i++
switch($i){
-1
Marc 29 août 2020 à 18:27