2009-04-20 14 views
5

quando scrivo un'istruzione if, l'ho controllare una variabile in questo modo:Controllo Se poi le dichiarazioni in PHP

if(isset($_GET['username']){ 
echo "set"; 
} else { 
echo "unset"; 
} 

Come potrei ottenere il mio if per verificare se due variabili sono impostate simile a questo:

if(isset($_GET['username'] & $_GET['firstname'])){ 
echo "set"; 
} else { 
echo "unset"; 
} 

Quindi, in pratica come faccio a controllare due cose in una dichiarazione if in una volta?

+2

Perché i downvotes? Anche se questa è una domanda piuttosto semplice, ma le persone hanno bisogno di imparare questa roba da qualche parte, e questo è il posto migliore che mai. Certo, potrebbe non essere dannoso ottenere un libro di programmazione introduttivo, ma essere gentile con i noobs. –

risposta

0
if (isset($_GET['username']) AND isset($_GET['firstname'])) 
{ 
    echo "set"; 
} 
else 
{ 
    echo "unset"; 
} 
11

controlla il Manuale PHP su control structures e logical operators:

if(isset($_GET['username']) && isset($_GET['firstname'])) { 
    echo "set"; 
} else { 
    echo "unset"; 
} 

Utilizzando il singolo & sta facendo un bitwise operation, che è certamente non quello che volete.

and è anche un sinonimo della sintassi &&, come hanno mostrato le altre risposte.

EDIT: Come indicato nei commenti, è possibile verificare se due variabili sono isset passandole entrambe alla funzione isset. Tuttavia, se si desidera eseguire qualche altro tipo di operazione, è necessario eseguire gli operatori logici sopra.

+0

Dai un'occhiata alla risposta di Nick Presta. – nickf

+0

Stavo rispondendo alla domanda generale "In pratica, come faccio a controllare due cose in una dichiarazione if in una volta?" ma suppongo che modificherò la mia risposta per includere quello ... –

0
if (isset($_GET['username']) && isset($_GET['firstname'])) 
{ 
    echo "set"; 
} 
else 
{ 
    echo "unset"; 
} 

Per riferimento: PHP's operators

+0

uh, è corretto? io non la penso così se lo è, è di nuovo un brutto php-hack ... "($ _GET [] && $ _GET [])" restituisce un valore booleano. le variabili possono essere impostate o meno, i valori solo ... lo sono. – stefs

+0

Manca un apostrofo dopo "nome utente". Inoltre, questo non è affatto un codice valido. –

+0

Risolto il problema per il modo in cui originariamente lo intendevo. Ho copiato il codice della domanda cambiando il loro uso e (l'operatore non corretto) per && senza controllare il resto. – Rob

1

Prova a usare l'operatore & & (logico e) piuttosto che & (binario e)

quindi se isset restituisce true per entrambi allora la se i rendimenti veri altrimenti il se restituirà false.

2
if (isset($_GET['username']) && isset($_GET['firstname'])) 
1

sì, o

eco ((isset ($ _ GET [ 'username']) & & isset ($ _ GET [ 'firstname'])) "set":? "Unset");

+0

Tendo ad apprezzare qualcosa del genere. –

7
if (isset($_GET['username'], $_GET['firstname'])) { 
    echo 'Set!'; 
} 

isset prende argomenti multipli e se sono forniti più parametri quindi isset() restituirà TRUE solo se tutti i parametri sono impostati. La valutazione va da sinistra a destra e si interrompe non appena si incontra una variabile non impostata.

+0

Sì, stavo per dirlo anch'io. Non posso credere a tutte le altre risposte che non hanno raccolto su questo ... – nickf

Problemi correlati