Prüfen, ob eine Variable definiert ist (Thema: PHP Beispiele)

Welche Methoden zur Verfügung stehen, um in PHP zu überprüfen, ob eine Variable oder ein Array-Schlüssel definiert sind

1. Prüfung mit isset()

Mittels isset() kann geprüft werden, ob eine Variable bereits definiert wurde.

PHP-Code
<?php
	$a = 1000;
	$b = 0;

	var_dump( isset($a) ); // true
	var_dump( isset($b) ); // true
	var_dump( isset($ab) ); // false
	var_dump( isset($foo) ); // false
?>

HTML-Code: Ausgabe
bool(true)
bool(true)
bool(false)
bool(false)


2. isset() auf Arrays angewandt

Häufig wird isset() auf Arrays angewendet, um zu prüfen, ob der Wert zu einem bestimmten Schlüssel existiert:

PHP-Code
<?php
	$alter = array('peter'=>31, 'ralf'=>46, 'susie'=>25);
	if (isset($alter['tommy'])) {
		echo($alter['tommy']);
	} else {
		echo('Das Alter von Tommy ist unbekannt.');
	}
?>

HTML-Code: Ausgabe
Das Alter von Tommy ist unbekannt.

Ein nützlicher Hinweis ist es dabei, dass mittels array_flip() die Schlüssel und Werte von Arrays vertauscht werden können, sodass array('peter'=>31) in array(31=>'peter') umgewandelt wird. So ist es auch mit isset() möglich zu prüfen, ob ein Wert in einem Array existiert (und nicht nur ob ein bestimmter Schlüssel vorhanden ist).

PHP-Code
<?php
	// Freunde von Benutzer A, ID-Nummern
	$friendsA = array(19942, 42455, 1343, 19298);

	// Freunde von Benutzer B, ID-Nummern
	$friendsB = array(3456, 42455, 123, 98484);

	$friendsBf = array_flip($friendsB);
	foreach ($friendsA as $val) {
		if (isset($friendsBf[$val])) {
			echo('Der Freund mit ID '.$val.' ist beiden Nutzern zugeteilt.');
		}
	}
?>

HTML-Code: Ausgabe
Der Freund mit ID 42455 ist beiden Nutzern zugeteilt.

3. empty() und Arrays

isset() hat einen Nachteil: Wenn einer Variablen der Wert NULL zugeordnet ist, dann gibt isset() immer false zurück, egal ob der Wert einer Variablen ($var) oder eines Array-Schlüssels ($var['key']) getestet wird. Umgangen werden kann dieses Problem indem !empty() statt isset() verwendet wird.

PHP-Code
<?php
	$a = 1000;
	$b = null;
	$c = array('eins'=>1, 'zwei'=>null);

	var_dump( isset($a) ); // true
	var_dump( isset($b) ); // false
	var_dump( isset($existiertNicht) ); // false
	var_dump( isset($c['eins']) ); // true
	var_dump( isset($c['zwei']) ); // false
	var_dump( isset($c['existiertNicht']) ); // false

	echo("\n\n");

	var_dump( !empty($a) ); // true
	var_dump( !empty($b) ); // false
	var_dump( !empty($existiertNicht) ); // false
	var_dump( !empty($c['eins']) ); // true
	var_dump( !empty($c['zwei']) ); // false
	var_dump( !empty($c['existiertNicht']) ); // false
?>

HTML-Code: Ausgabe
bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
bool(false)


bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
bool(false)


4. isset() vs empty() vs array_key_exists() bei Arrays

Auch empty() ist nicht ohne Nachteile: Alle false-ähnlichen Werte werden als leer angesehen und empty() gibt daher für diese true zurück. Diese Werte sind im einzelnen: (bool)false, (int)0, (float)0.0, (string)"", (string)"0" und NULL. Um auch dieses Problem zu „umschiffen” kann die etwas unhandlichere Funktion array_key_exists() verwendet werden. Diese erwartet den Namen des zu prüfenden Schlüssels und das Array, das untersucht werden soll. Ist der Schlüssel in dem Array definiert — egal welcher Wert — wird true zurückgegeben, sonst false.

PHP-Code
<?php
	$arr = array('eins'=>'test', 'zwei'=>null, 'drei'=>0);

	echo("isset:\n");

	var_dump(isset($arr['eins'])); // true
	var_dump(isset($arr['zwei'])); // false
	var_dump(isset($arr['drei'])); // true
	var_dump(isset($arr['vier'])); // false

	echo("\nempty:\n");

	var_dump(!empty($arr['eins'])); // true
	var_dump(!empty($arr['zwei'])); // false
	var_dump(!empty($arr['drei'])); // false
	var_dump(!empty($arr['vier'])); // false

	echo("\narray_key_exists:\n");

	var_dump(array_key_exists('eins', $arr)); // true
	var_dump(array_key_exists('zwei', $arr)); // true
	var_dump(array_key_exists('drei', $arr)); // true
	var_dump(array_key_exists('vier', $arr)); // false
?>

HTML-Code: Ausgabe
isset:
bool(true)
bool(false)
bool(true)
bool(false)

empty:
bool(true)
bool(false)
bool(false)
bool(false)

array_key_exists:
bool(true)
bool(true)
bool(true)
bool(false)


Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung. OK