Prüfen, ob eine Variable definiert ist

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)



Deprecated: Directive 'allow_url_include' is deprecated in Unknown on line 0