Jaka jest różnica w zastosowaniu isset() i !empty() ?

Z PHPEdia.pl
Skocz do: nawigacji, wyszukiwania

Funkcja isset sprawdza czy zmienna została utworzona. Zwraca true jeśli istnieje lub false jeśli zmiennej nie ma. Wyjątek stanowi sytuacje gdy zmienna ma "wartość" NULL - wtedy funkcja isset zwraca false.

Natomiast empty sprawdza czy zmienna ma jakąś zawartość. Zwraca true jeśli zmienna ma wartość:

  • "" (pusty string)
  • 0 (0 jako integer)
  • "0" (0 jako string)
  • NULL
  • FALSE
  • array() (pusta tablica)
  • var $var; (pole klasowe bez wartości)

W przeciwnym razie false. Znak ! jest zaprzeczeniem.

<?php
 
if( isset($zmienna) ) {
	echo 'Jest zmienna';
}
 
$zmienna = array("",0,"0",null,false,array(),true,1,"1",array(1));
 
for($i = 0; $i < sizeof($zmienna); $i++) {
	echo $i;
	echo isset($zmienna[$i]) ? ' IsSet - true, ' : ' IsSet - false, ';
	echo empty($zmienna[$i] ? 'empty - true' : 'empty - false';
}
?>

Wynik:

0 IsSet - true, empty - true
1 IsSet - true, empty - true
2 IsSet - true, empty - true
3 IsSet - false, empty - true
4 IsSet - true, empty - true
5 IsSet - true, empty - true
6 IsSet - true, empty - false
7 IsSet - true, empty - false
8 IsSet - true, empty - false
9 IsSet - true, empty - false

przykład z klasą:

<?php
class przykład {
	public $x = 100;
 
	public function pokazX() {
		return $this->x;
	}
	public function pokazY() {
		return $this->y;
	}
	public function ustawXY($x,$y) {
		$this->x = $x;
		$this->y = $y;
	}
}
 
$obiekt = new przykład;
echo $obiekt->pokazX(); //100
echo $obiekt->pokazY(); //NULL
$obiekt->ustawXY(10,30);
echo $obiekt->pokazX(); //10
echo $obiekt->pokazY(); //30
?>

Jest to element FAQ, czyli zestawienia odpowiedzi na najczęściej zadawane pytania.

Zestawienie: Informacje | Podstawy PHP | Porady praktyczne | Pytania z forum | Bezpieczeństwo