2013-12-14 15 views
19

Nie rozumiem różnicy między isset() a !empty().Jaka jest różnica między "isset()" i "! Empty()" w PHP?

Bo jeśli zmienna została ustawiona, czy to nie to samo, co niepusta?

+3

Czytałaś instrukcję dla obu? [Tutaj] (http://www.php.net/isset) i [tutaj] (http://www.php.net/empty) – George

+2

Przeczytaj również http://kunststube.net/isset/. Dzięki @deceze – hek2mgl

+0

'isset();' sprawdza, czy zmienna jest ustawiona dosłownie, jak w zmiennej faktycznie wskazuje na coś. 'empty();' sprawdza czy wartość wskazywana przez zmienną zawiera cokolwiek. – AlphaDelta

Odpowiedz

30

ISSET sprawdza zmienną, aby sprawdzić, czy została ustawiona. Innymi słowy, sprawdza, czy zmienna jest dowolną wartością z wyjątkiem wartości NULL lub nie ma przypisanej wartości. ISSET zwraca TRUE, jeśli zmienna istnieje i ma wartość inną niż NULL. Oznacza to, że zmienne oznaczone jako "", 0, "0" lub FALSE są ustawione, a zatem są TRUE dla ISSET.

PUSTE sprawdza, czy zmienna jest pusta. Pusty jest interpretowany jako: "(pusty łańcuch), 0 (liczba całkowita), 0,0 (zmienna)`, "0" (ciąg), NULL, FAŁSZ, tablica() (pusta tablica) i "$ var;" (Zmienna zadeklarowana, ale bez wartości w klasie.

Aby uzyskać więcej informacji, zobacz this article

+3

"" nie jest pusty. "" jest pusty. – EresDev

+1

Czy możesz podać jeden przykład, gdzie isset jest prawdziwy, ale pusty jest fałszywy. Również przykład, w którym isset jest fałszywy, ale pusty jest prawdziwy? – Unbreakable

0

isset - Ustal, czy zmienna jest ustawiona i nie ma wartości NULL.

!empty - Ustal, czy zmienna NIE jest pusta.

+0

'! Isset (NULL) === pusty (NULL)'. – hek2mgl

+3

Jak zdefiniowano "puste"? Niewystarczające wyjaśnienie. – deceze

0

Isset powrót false, jeśli zmienna nie została ustawiona lub jest zerowa i zwraca wartość true, jeśli zmienna została ustawiona i nie jest pusta

! pusty return true, jeśli zmienna została ustawiona i nie jest pusta. łańcuch pty, pusta tablica, "0", 0 i fałsz są zdefiniowane jako puste.

0

I jeszcze jedna uwaga. empty() sprawdza, czy zmienna istnieje również. To znaczy. jeśli wykonamy empty() do zmiennej, która nie została zadeklarowana, nie otrzymamy błędu, empty() zwraca "true". Dlatego możemy uniknąć isset(), jeśli będziemy musieli sprawdzić, czy zmienna jest pusta.

Więc

isset($var) && !empty($var) 

będzie równa

!empty($var) 
Powiązane problemy