2013-06-08 13 views
12

Muszę sprawdzić, czy zmienne są ustawione na coś. Do tej pory używam strlen(), ale to jest naprawdę żenujące, ponieważ jestem całkiem pewny, że nie jest to bardzo wydajna funkcja, której należy użyć po raz kolejny.Sprawdź, czy zmienna php get jest ustawiona na cokolwiek?

Jak wykonać ten rodzaj czeku bardziej wydajnie:

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

pamiętać, że nie ma ona nic zrobić jeśli $_GET['variable'] = ''

Wystarczy, aby wyjaśnić, co mam na myśli - Gdybym miał www.example.com?variable=&somethingelse=1 nie chciałbym go przeniknąć, że jeśli oświadczenie

+2

ten nie jest żenujące, działa tak, jak sobie życzysz, jest czytelny i zrozumiały. –

+0

Chciałbym tylko wyjaśnić, co mam na myśli - gdybym miał www.example.com?variable=&somethingelse=1, nie chciałbym, żeby to przenikało, jeśli oświadczenie –

+0

Awww staram się nie wprawiać w zakłopotanie za pomocą moich skryptów, ale jest to trudne czasami ! –

Odpowiedz

24

Można spróbować empty.

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

Na plus, to będzie również sprawdzić, czy zmienna jest ustawiona czy nie, to nie ma potrzeby, aby zadzwonić isset oddzielnie.

Istnieje pewne zamieszanie związane z brakiem połączenia isset. Od documentation.

Zmienna jest uznawana za pustą, jeśli nie istnieje lub jej wartość jest równa FAŁSZ. empty() nie generuje ostrzeżenia, jeśli zmienna nie istnieje.

i ...

Oznacza to empty() jest zasadniczo zwięzły równoważne! Isset ($ zmienna) || $ var == false.

+3

To jest niepoprawne, ponieważ może być ostrzeżeniem. Użyj isset – Winston

+1

@ Winston, z [documentation] (http://in3.php.net/empty): Zmienna jest uznawana za pustą, jeśli nie istnieje lub jej wartość jest równa FALSE. empty() nie generuje ostrzeżenia, jeśli zmienna nie istnieje. –

+0

masz rację! Przepraszam ... Ale wcześniej, jeśli tak pisałeś, to może rzucić na to uwagę. – Winston

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

} 
+2

co, jeśli dane wejściowe będą miały wartość "value =" "isset będzie prawdziwe, ale wciąż puste – Fabio

+0

I tak, to jest to, czego chciał Q: _Nie zwracam uwagi, że nie chcę, aby cokolwiek robił, jeśli $ _GET [ 'variable'] = '' __ –

+0

@AxelAmthor, ale powyższy kod zrobi coś, jeśli value = "". Jest ustawiony, więc warunek if będzie "prawdziwy". –

0

można użyć sprawdzić isset() ale wolałbym nie sprawdzać także dla pusty znak z != ''

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

Nie musisz wywoływać 'isset', jeśli zamierzasz używać' empty'. Możesz zobaczyć moją odpowiedź dla szczegółów lub sprawdzić [dokumentację] (http://in3.php.net/empty). –

0

jak o tylko

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

Nie będzie działać z '$ _GET ['variable'] = '0''; –

+0

lub może: if ($ _GET ['variable']! = "") –

1

Jeśli chcesz po prostu sprawdzić, czy każdy $ _GET jest ustawiona, nie znając wartości prostu policzyć $ _GET tablicy:

<?php 
if (count($_GET) == 0): 
    // do your stuff 
else: 
    // do your other stuff 
endif; 
?> 
Powiązane problemy