Visualizzazione risultati 1 fino 8 di 8

Discussione: && nei case di uno switch

  1. #1
    Guest

    Predefinito && nei case di uno switch

    Salve, mi domandavo se ci fosse modo di usare && (AND) nei case di uno switch.. Praticamente devo prendere un campo da una tabella che è un numero e mi servirebbe vedere se quel numero è compreso tra 0 e 4 fa una determinata azione, se invece è tra 5 e 19 un' altra.. Tipo:


    Codice PHP:
    switch($numero) {
    case >=
    0 && <= 4:
    echo
    'Sei tra 0 e 4';
    break;
    case >=
    5 && <= 19:
    echo
    'Sei tra 5 e 19';
    break;
    }

    Non so se si può fare o bisogna ricorrere per forza agli elseif.

    EDIT: Facendo così funziona:

    Codice PHP:
    switch($numero) {
    case
    $numero >= 0 && $numero <= 4:
    echo
    'Sei tra 0 e 4';
    break;
    case
    $numero >= 5 && $numero <= 19:
    echo
    'Sei tra 5 e 19';
    break;
    }
    Ultima modifica di mybeatnews : 09-07-2011 alle ore 12.29.40 Motivo: Risolto

  2. #2
    Guest

    Predefinito

    A questo punto utilizzare direttamente if/else dato che sarebbe molto più leggibile e se sono pochi numeri è meglio, in questo caso switch rischia di rallentare lo script al posto di velocizzarlo (questione di millesimi).


  3. #3
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Il codice che hai scritto funziona solo per tutti i valori di $numero che convertiti nel tipo boolean sono veri. Per esempio con 0 il tuo codice non funziona.
    Questo è perché hai fatto un uso improprio del costrutto: lo switch serve a verificare a cosa equivale il valore dell'espressione da confrontare (spesso una variabile), non a verificare altre condizioni su di essa.
    Tu invece stai di fatto verificando quali espressioni che hai scritto nei case sono vere, ma a questo punto lo switch è inutile: per fare quello il costrutto più adatto è l'if.

  4. #4
    Guest

    Predefinito

    Per esempio con 0 il tuo codice non funziona
    Se metto NOT NULL al campo lo 0 lo legge come valore o sempre come "null" o "false" ?

  5. #5
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Non capisco la domanda, potersti essere un po' più chiaro?

  6. #6
    Guest

    Predefinito

    Lo leggerà come false

  7. #7
    Guest

    Predefinito

    Ok biccheddu, comunque alla fine ho usato le if, forse è piu' semplice.

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,246

    Predefinito

    Non è che è più semplice: usavi lo switch in modo errato.
    Come detto da karl, nei case ci vanno costanti, e non condizioni!

    Ciao!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •