2013-06-08 35 views
12

Devo controllare se le variabili sono impostate su qualcosa. Fino ad ora ho usato strlen(), ma quello è davvero imbarazzante come sono abbastanza sicuro che non è una funzione molto efficiente da utilizzare più di un altro.Controlla se php get variable è impostato su qualcosa?

Come si esegue questo tipo di controllo in modo più efficiente:

if (strlen($_GET['variable']) > 0) 
{ 
    Do Something 
} 

nota che io non voglio fare nulla se $_GET['variable'] = ''

tanto per chiarire quello che voglio dire - Se avessi www.example.com?variable=&somethingelse=1 non vorrei di penetrare che if

+2

Questo non è imbarazzante, funziona come desideri ed è leggibile e comprensibile. –

+0

Giusto per chiarire cosa intendo - Se avessi www.example.com?variable=&somethingelse=1 Non vorrei che penetrasse quello se affermazione –

+0

Awww Cerco di non essere imbarazzato con il mio scripting ma è difficile a volte ! –

risposta

24

si può provare empty.

if (!empty($_GET['variable'])) { 
    // Do something. 
} 

Sul lato positivo, sarà anche controllare se la variabile è impostata oppure no, cioè, non c'è bisogno di chiamare isset separatamente.

C'è una certa confusione riguardo al non chiamare isset. Da documentation.

Una variabile è considerata vuota se non esiste o se il suo valore è uguale a FALSE. empty() non genera un avviso se la variabile non esiste.

e ...

Ciò significa vuoto() è essenzialmente l'equivalente concisa! Isset ($ var) || $ var == false.

+3

Questo non è corretto, perché potrebbe essere un avviso. Usa isset – Winston

+1

@ Winston, dalla [documentazione] (http://in3.php.net/empty): Una variabile è considerata vuota se non esiste o se il suo valore è uguale a FALSE. empty() non genera un avviso se la variabile non esiste. –

+0

hai ragione! Scusa ... Ma prima, se hai scritto in questo modo, potrebbe farti notare. – Winston

6
if(isset($_GET['variable']) && $_GET['variable']!=""){ 

} 
+2

cosa succede se un input avrà 'value =" "' isset sarà vero ma ancora vuoto – Fabio

+0

E sì, questo è ciò che il Q voleva: __Nota che non voglio che faccia nulla se $ _GET [ 'variable'] = '' __ –

+0

@AxelAmthor, ma il codice sopra farà qualcosa se value = "". È impostato, quindi la condizione if sarà 'true'. –

0

è possibile utilizzare per verificare isset() ma io preferirei di controllare anche per non aver carattere vuoto con != ''

if (isset($_GET['variable'])) && ($_GET['variable']) != '') 
2
if(isset($_GET['variable']) && !empty($_GET['variable'])) 
{ 
//Do Something 
} 
+1

Non è necessario chiamare 'isset' se si intende usare' vuoto'. Puoi vedere la mia risposta per i dettagli o controllare la [documentazione] (http://in3.php.net/empty). –

0

come circa appena

if ($_GET['variable']) 
{ 
    Do Something 
} 
+0

Non funziona con '$ _GET ['variabile'] = '0''; –

+0

o forse: if ($ _GET ['variable']! = "") –

1

Se si desidera solo per controllare se $ _GET è impostato, senza conoscere il valore basta contare l'array $ _GET:

<?php 
if (count($_GET) == 0): 
    // do your stuff 
else: 
    // do your other stuff 
endif; 
?> 
Problemi correlati