Co robią i czym się różnią funkcje isset() i empty()

Leszek Sewastianowicz 16-12-2010, 14:44

Wielu początkujących programistów PHP ma problemy ze 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 naprzeciw, 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 znak spacji albo 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

Więcej informacji na temat programowania w PHP znajdziesz w szkoleniach wideo „Zawodowy Webmaster” oraz „Programowanie obiektowe w PHP”. Podając kod di500 w formularzu zamówienia, otrzymasz darmowy bonus - atrakcyjne publikacje: „7 najczęstszych błędów popełnianych przez webmasterów, czyli jak wiele czasu, nerwów i pieniędzy możesz zaoszczędzić”, „15 pytań, które zada Ci pracodawca w trakcie rozmowy kwalifikacyjnej na stanowiska webmaster i programista PHP” oraz „Jak zarabiać na robieniu stron WWW”.


  
znajdź w serwisie

RSS - Wywiad
Wywiad  
RSS - Interwencje
RSS - Porady
Porady  
RSS - Listy
Listy  
« Wrzesień 2019»
PoWtŚrCzwPtSbNd
 1
2345678
9101112131415
16171819202122
23242526272829
30