Code:
Notice: Undefined index: Banane in ~/test.php on line 3
Zwei weitere Ursacher von Notizen, die es zu beheben gilt. Denn die Notizen weissen darauf hin, das etwas falsch laufen könnte, oder sogar Sicherheitslücken beherbergt. Diese Notiz ensteht bei folgendem Stück Code:
Code:
<?php
$var = array('Apfel' => 'Grün', 'Zitrone' => 'Gelb');
if($var['Banane'] == "") {
$var['Banane'] = 'Dunkelgelb';
}
?>
Es wird versucht auf den Index "Banane" zuzugreifen, dieser aber existiert nicht. Es ist im Grunde das ähnliche wie der versuchte Zugriff auf eine Variable, die es nicht gibt. Beide Fälle kann man mit 2 verschiedenen Sprachkontrukten entgegen treten (Es sind nicht wirklich Funktionen). Das erste Konstrukt, isset(), prüft, ob eine Variable oder ein Array-Schlüssel existiert. Dabei könnte man oberer Code so schreiben:
Code:
<?php
$var = array('Apfel' => 'Grün', 'Zitrone' => 'Gelb');
if(isset($var['Banane']) == false) {
$var['Banane'] = 'Dunkelgelb';
}
?>
Allerdings tritt der Fall nicht ein, sollte es "Banane" geben, sie ist aber leer. Natürlich könnte man da so etwas schreiben:
Code:
<?php
$var = array('Apfel' => 'Grün', 'Zitrone' => 'Gelb');
if(isset($var['Banane']) == false OR $var['Banane'] == '') {
$var['Banane'] = 'Dunkelgelb';
}
?>
Es ist aber unschön und lässt sich kürzer und logischer schreiben. Dazu benötigen wir den Konstrukt empty(). empty() prüft, ob eine Variable leer ist. Leer ist eine Variable dann, wenn sie nicht gesetzt ist, wenn sie NULL, 0, '', "", false oder "\0" ist. Und sie wirft, wie isset, keine Notiz, wenn es die Variable oder den Array-Schlüssel nicht gibt. Das Beispiel verkürzt sich also wieder:
Code:
<?php
$var = array('Apfel' => 'Grün', 'Zitrone' => 'Gelb');
if(empty($var['Banane'])) {
$var['Banane'] = 'Dunkelgelb';
}
?>