For in uno switch

  • Creatore Discussione Creatore Discussione alex12
  • Data di inizio Data di inizio

alex12

Nuovo Utente
8 Mar 2023
2
0
1
Salve a tutti ragazzi sono nuovo ! Ho cominciato da poco con il Php e sto facendo vari test , ho un problema nel mettere un for in uno switch o meglio non funziona come dovrebbe , mi scuso inizialmente per gli errori presenti nel codice 'sono un neofita '.
In pratica ho provato ad inserire un for in uno switch che in base ad un numero x mi dia la tabellina di quel numero se appunto presente nei case dello switch .
Il problema è questo , se do a variabile $tabellina valore 0 mi esegue la moltiplicazione dello 0 e non "il default dello switch" dove sbaglio ?

PHP:
  <?php
    
    $tabellina=0;
    
 
 switch ($tabellina){
    
    case ($tabellina == 2) :
        echo "LA TABELLINA DEL $tabellina"."<br>";
        for($i=1;$i<=10;$i++){
                echo "2x$i = ".($i*$tabellina)."<br>";}
        break;
        case ($tabellina == 3) :
            echo "LA TABELLINA DEL $tabellina"."<br>";
            for($i=1;$i<=10;$i++){
                    echo "3x$i = ".($i*$tabellina)."<br>";}
            break;
            case ($tabellina == 4) :
                echo "LA TABELLINA DEL $tabellina"."<br>";
                for($i=1;$i<=10;$i++){
                        echo "4x$i = ".($i*$tabellina)."<br>";}
                break;
        default :
        echo 'nessun numero inserito riconosciuto';

 }

 
 ?>
 
Ciao, c'è qualche errore di forma.
Lo "switch case" esegue intrinsecamente un confronto semplice di uguaglianza tra la variabile/espressione indicata nello switch e il valore indicato nel case. Non andrebbe quindi specificata la condizione nei case, ma semplicemente il valore che vuoi sia confrontato.

Avrai quindi "case 2:", "case 3:", ecc.

Il problema che riscontri è una conseguenza logica data dal tuo "errore". Di fatto, quando $tabellina è uguale 0, viene eseguito il primo case perché il valore restituito dalla condizione ($tabellina == 2) è "false"; di conseguenza (per un fatto di auto casting) false risulta uguale a 0.
 
Ultima modifica:

Discussioni simili