Visualizzazione risultati 1 fino 4 di 4

Discussione: Un if in php crea problemi nella decisione dei numeri

  1. #1
    Guest

    Predefinito Un if in php crea problemi nella decisione dei numeri

    Qualcuno potrebbe dirmi perchè questo codice mi fa diventare page sempre 1 qualsiasi valore io metta?

    Codice PHP:
    if(empty($_GET['page']) || $_GET['page'] <= 0 || !is_nan($_GET['page'])) {
    $page = 1;
    } else {
    $page = $_GET['page'];
    }

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Semplicemente perché all'operatore logico OR ( || ) basta che un singolo controllo sia vero per rendere vero tutto l'if. Per esempio:
    Codice PHP:
    if(true || false || false) { echo 'vero'; }
    Il problema principale è la funziona empty, se $_GET['page'] non è vuota l'if è reso vero e quindi il resto del controllo è inutile. Usa isset al suo posto.

    Anche se nel tuo caso io avrei fatto:
    Codice PHP:
    $page = isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] > 0 ? $_GET['page'] : 1;

  3. #3
    Guest

    Predefinito

    Grazie! Funziona perfettamente!

    p.s. devo imparare php più approfondito.... tu con una rifga fai tutto quello che io faccio con un if e un else :O

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Nessuno ti vieta di usare if/else; però è più pratico usare l'operatore ternario per operazioni così semplici.

Regole di scrittura

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