Co robią i czym się różnią funkcje isset() i empty()
Wielu poczÄ…tkujÄ…cych programistów php ma problemy z stosowaniem funkcji isset() oraz empty() – nie w każdej sytuacji potrafiÄ… jednoznacznie okreÅ›lić jakÄ… wartość powinny te funkcje zwracać dla okreÅ›lonych argumentów. By wyjść im na przeciw postanowiÅ‚em zebrać najczęściej wystÄ™pujÄ…ce przypadki i je wyjaÅ›nić.
echo isset($a);
echo empty($a);
$a=NULL;
echo isset($a);
echo empty($a);
?>
Gdy zmienna $a nie istnieje lub ma wartość NULL, funkcja isset($a) zwróci wartość false, a funkcja empty($a) zwróci wartość true.
$a=true;
echo isset($a);
echo empty($a);
?>
Gdy zmienna $a ma wartość true, funkcja isset($a) zwróci wartość true, a funkcja empty($a) zwróci wartość false.
$a=false;
echo isset($a);
echo empty($a);
$a=0;
echo isset($a);
echo empty($a);
?>
Gdy zmienna $a ma wartość false lub 0, funkcje isset($a) i empty($a) zwrócą wartość true.
$a=-3;
echo isset($a);
echo empty($a);
$a=1.36;
echo isset($a);
echo empty($a);
?>
Gdy zmienna $a ma wartość liczbową różną od 0, to isset($a) zwróci wartość true, a funkcja empty($a) zwróci wartość false.
$a=”;
echo isset($a);
echo empty($a);
$a=’0′;
echo isset($a);
echo empty($a);
?>
Gdy zmienna $a jest pustym Å‚aÅ„cuchem znaków lub Å‚aÅ„cuchem skÅ‚adajÄ…cym siÄ™ z pojedynczego znaku ’0′, funkcje isset($a) i empty($a) zwrócÄ… wartość true.
$a=’000′;
echo isset($a);
echo empty($a);
$a=’ ‘;
echo isset($a);
echo empty($a);
$a=’Ala ma 3/4 kota’;
echo isset($a);
echo empty($a);
?>
Gdy zmienna $a zawiera kilka znaków ’0′, lub zawiera znak spacji lub jest dowolnym innym ciÄ…giem znaków, to isset($a) zwróci wartość true, a funkcja empty($a) zwróci wartość false.
$a=array();
echo isset($a);
echo empty($a);
?>
Gdy zmienna $a jest tablicą nie zawierającą żadnych elementów, funkcje isset($a) i empty($a) zwrócą wartość true.
$a=array(NULL);
echo isset($a);
echo empty($a);
$a=array(false);
echo isset($a);
echo empty($a);
$a=array(0);
echo isset($a);
echo empty($a);
$a=array(”);
echo isset($a);
echo empty($a);
?>
Gdy zmienna $a jest tablicą zawierającą puste elementy np. NULL, false, 0, pusty łańcuch znaków, to isset($a) zwróci wartość true, a funkcja empty($a) zwróci wartość false.
$a=array(‘kolor’ => ‘zielony’);
echo isset($a['kształt']);
echo empty($a['kształt']);
$a=array(‘krokodyl’, ‘żaba’, ‘hipopotam’);
echo isset($a[8]);
echo empty($a[8]);
class Test
{
var $a;
}
$a=new Test();
echo isset($a->a);
echo empty($a->a);
?>
Gdy odwołujemy się do nieistniejącego klucza lub indeksu tablicy albo do pustego pola obiektu, funkcja isset($a) zwróci wartość false, a funkcja empty($a) zwróci wartość true.
Dla wygody wszystkie rozpatrywane przypadki zebrałem w tabelce poniżej.
badany element | isset() | empty() |
brak zmiennej | false | true |
---|---|---|
NULL | false | true |
wartość logiczna true | true | false |
wartość logiczna false | true | true |
wartość liczbowa 0 | true | true |
inna wartość liczbowa | true | false |
pusty łańcuch znaków | true | true |
łańcuch znaków zawierający zero | true | true |
łańcuch znaków zawierający wiele zer | true | false |
spacje | true | false |
dowolny ciąg znaków | true | false |
pusta tablica | true | true |
tablica zawierająca puste elementy (np. o wartościach NULL, false, 0, pusty łańcuch znaków) |
true | false |
nieistniejÄ…cy klucz tablicy | false | true |
nieistniejÄ…cy indeks tablicy | false | true |
pole klasy bez podstawionej wartości | false | true |