To zależy od tego, czego szukasz, jeśli chcesz tylko sprawdzić, czy jest puste, po prostu użyj, emptyponieważ sprawdza, czy jest również ustawione, jeśli chcesz wiedzieć, czy coś jest ustawione, czy nie isset.
Empty sprawdza, czy zmienna jest ustawiona, a jeśli tak, sprawdza ją pod kątem wartości null, „”, 0 itd
Isset po prostu sprawdza, czy jest ustawiona, może to być cokolwiek niezerowego
W emptyprzypadku następujących rzeczy są uważane za puste:
- „” (pusty ciąg)
- 0 (0 jako liczba całkowita)
- 0,0 (0 jako liczba zmiennoprzecinkowa)
- „0” (0 jako ciąg)
- ZERO
- FAŁSZYWE
- array () (pusta tablica)
- var $ var; (zadeklarowana zmienna, ale bez wartości w klasie)
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
empty () jest przeciwieństwem zmiennej (boolean), z wyjątkiem tego, że nie jest generowane żadne ostrzeżenie, gdy zmienna nie jest ustawiona .
Odnośnie problemu
Podręcznik PHP mówi
isset () zwróci FALSE, jeśli testujesz zmienną, która została ustawiona na NULL
Twój kod byłby w porządku, ponieważ:
<?php
$var = '23';
if (!empty($var)){
echo 'not empty';
}else{
echo 'is not set or empty';
}
?>
Na przykład:
$var = "";
if(empty($var)) // true because "" is considered empty
{...}
if(isset($var)) //true because var is set
{...}
if(empty($otherVar)) //true because $otherVar is null
{...}
if(isset($otherVar)) //false because $otherVar is not set
{...}