Czy możesz mi pomóc ulepszyć mój styl kodowania? :) W niektórych zadaniach muszę sprawdzić - czy zmienna jest pusta lub zawiera coś. Aby rozwiązać to zadanie, zwykle wykonuję następujące czynności.
Sprawdź - czy ta zmienna jest ustawiona czy nie? Czy jest ustawione - sprawdzam - jest puste czy nie?
<?php
$var = '23';
if (isset($var)&&!empty($var)){
echo 'not empty';
}else{
echo 'is not set or empty';
}
?>
I mam pytanie - czy powinienem użyć isset () przed empty () - czy to konieczne? TIA!
Odpowiedzi:
To zależy od tego, czego szukasz, jeśli chcesz tylko sprawdzić, czy jest puste, po prostu użyj,
empty
ponieważ sprawdza, czy jest również ustawione, jeśli chcesz wiedzieć, czy coś jest ustawione, czy nieisset
.Empty
sprawdza, czy zmienna jest ustawiona, a jeśli tak, sprawdza ją pod kątem wartości null, „”, 0 itdIsset
po prostu sprawdza, czy jest ustawiona, może to być cokolwiek niezerowegoW
empty
przypadku następujących rzeczy są uważane za puste:Z http://php.net/manual/en/function.empty.php
Jak wspomniano w komentarzach, brak ostrzeżenia jest również ważny z pustym ()
Podręcznik PHP mówi
Odnośnie problemu
Podręcznik PHP mówi
Twój kod byłby w porządku, ponieważ:
Na przykład:
źródło
empty
: Nie generuje ostrzeżenia, gdy testowana zmienna nie istnieje. O to właśnie chodzi w tej funkcji, w przeciwnym razie jest identyczna z== false
.isset
na pustej (i istniejącej) zmiennej zostanie obliczona wartośćfalse
.W danym przypadku:
if ($var)
.Musisz użyć,
isset
jeśli nie wiesz, czy zmienna istnieje, czy nie. Ponieważ jednak zadeklarowałeś to w pierwszym wierszu, wiesz, że istnieje, dlatego nie musisz, nie, nie powinieneś go używaćisset
.To samo dotyczy
empty
tylko tego, żeempty
łączy w sobie również sprawdzenie prawdziwości wartości.empty
jest równoważne!isset($var) || !$var
i!empty
jest równoważne zisset($var) && $var
lubisset($var) && $var == true
.Jeśli chcesz przetestować tylko zmienną, która powinna istnieć pod kątem prawdziwości ,
if ($var)
jest całkowicie adekwatna i na temat.źródło
!empty is equivalent to isset($var) && $var
, byłoby wspaniale. Dzięki @ decezeMożesz po prostu użyć pustej () - jak widać w dokumentacji , zwróci ona false, jeśli zmienna nie ma wartości.
Przykład na tej samej stronie:
Możesz użyć isset, jeśli chcesz tylko wiedzieć, czy nie ma wartości NULL. W przeciwnym razie wydaje się, że pusta () jest dobra do użycia samodzielnie.
źródło
$var = null; isset( $var ) == true
.Oto wyniki
isset()
iempty()
dla 4 możliwości: niezadeklarowana, zerowa, fałszywa i prawdziwa.Zauważysz, że wszystkie wyniki „isset” są przeciwieństwem wyników „pustych”, z wyjątkiem przypadku
$b=false
. Wszystkie wartości (z wyjątkiem wartości null, która nie jest wartością, ale nie jest wartością), których wynikiem jest fałsz, zwróci prawdę, gdy zostanie przetestowana,isset
a fałsz, gdy zostanie sprawdzona wartość „puste”.Dlatego używaj,
isset()
gdy martwisz się istnieniem zmiennej. I używaj,empty
gdy testujesz prawdę lub fałsz. Jeżeli rzeczywista typu sprawach pustką, użytkowaniais_null
i===0
,===false
,===''
.źródło
Empty zwraca prawdę, jeśli zmienna nie jest ustawiona. Ale isset zwraca true, nawet jeśli zmienna nie jest pusta.
źródło
To jest prosty przykład. Mam nadzieję, że to pomoże.
edycja: dodana
isset
w przypadku, gdy zmienna nie jest zdefiniowana jak powyżej, spowodowałaby błąd, sprawdzenie, czy przynajmniej jej pierwszy zestaw pomoże usunąć trochę bólu głowy na drodze.źródło
strlen
poniżej zera? Chcę zobaczyć ten sznurek.