Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    switch - case con condizioni

    Guardando un po' di discussioni precedenti e la http://php.net/manual/en/control-structures.switch.php]guida ufficiale di php sullo switch[/URL] mi è parso di capire che nei case si possono inserire anche delle condizioni, oltre che un numero o una stringa.

    Codice PHP:
       //  confronto restituisce 0 se i 2 numeri sono uguali
       //  1 se $numero1 è > di $numero2
       // -1 se $numero1 è < di $numero2

       
    $differenza $this->confronto($numero1,$numero2);

       switch(
    $differenza){
           case (
    $differenza 0):
               ...
           break;

           case (
    $differenza 0):
               ...
           break;

           default:
               ...
           break;
       } 
    Qualcuno sa spiegarmi perché questo codice funziona tranne quando $differenza vale 0?
    Mi consigliate di lasciar stare questo sistema e fare il controllo con gli if?

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    non si può fare non ha senso uno switch case così

    il vantaggio dello switch è saltare direttamente all'istruzione dato un'intero o una stringa che fa da etichetta (numero>0 non è una etichetta ma una condizione) poi il programma prosegue alle istruzioni successive infatti è necessario usare il breack per saltare le altre eitchette

  3. #3
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    potresti fare una cosa del genere però

    Codice PHP:
    $differenza $this->confronto($numero1,$numero2); 
    if(
    $differenza>0$differenza=1;

       switch(
    $differenza){ 
           case 
    0//diff = 0 
               
    ... 
           break; 

           case 
    1//diff>0
               
    ... 
           break; 

           default: 
    //diff<0 al default il break non è necessaio 
               
    ... 
       } 

  4. #4
    Io avevo risolto così:

    Codice PHP:
    $differenza $this->confronto($numero1,$numero2);     
    switch(
    $differenza){        
       case 
    0:   // num1 == num2
          
    ...        
       break;

       case 
    1:   // num1 > num2         
          
    ...        
       break;

       default:  
    // num1 < num2              
          
    ...
       break;  


    Più che altro era per capire se è fattibile mettere una condizione nel case.

    non si può fare non ha senso uno switch case così
    il vantaggio dello switch è saltare direttamente all'istruzione dato un'intero o una stringa che fa da etichetta (numero>0 non è una etichetta ma una condizione) poi il programma prosegue alle istruzioni successive infatti è necessario usare il breack per saltare le altre eitchette

    Grazie dei suggerimenti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.