echo $begrüßung;
Nun, Studiuo for Eclipse meldet z.b. bei;
if(!isset($saved_arr['BodyPaper'])){
$saved_arr['BodyPaper'] = NULL;
}
die Meldung;
var-use-before-def-global : Global variable $saved_arr was used before it was defined
Bei einem Lesezugriff auf ein Array-Element ist natürlich die Sachlage eine andere als bei einer "einfachen" Variable. Zuerst erfolgt ein Zugriff auf das Array, dann auf das Element. Der Zugriff auf ein Array-Element scheitert also schon vorher, wenn das Array, in dem es stecken soll, nicht existiert. Dem isset() ist das jedoch egal. Es meckert in dem Fall nicht. Es scheint nur so, als ob das Zend Studio nur die Array-Problematik sieht, nicht aber, dass diese durch das isset() entschärft ist.
Wenn du kannst, initialisiere $saved_arr einfach als leeres Array. Dann existiert es definitiv und ist nicht auf einen mehr oder weniger zufälligen Schreibzugriff auf ein Element angewiesen, um angelegt zu werden.
Eine Zeile weiter steht fast das Geliche;
if(!isset($saved_arr['CoverSelectBack'])){
$saved_arr['CoverSelectBack'] = NULL;
}das wird dann aber nicht angemeckert.
Nun wurde das Array ja auch angelegt, zumindest denkt das Zend Studio das. Es kann gut möglich sein, dass es auch schon zufrieden ist, wenn du bei BodyPaper
if (false)
$saved_arr['BodyPaper'] = NULL;
notierst. Nur wenn es wirklich "schlau" ist, stellt es fest, dass der Zweig nicht abgearbeitet werden kann und damit $saved_arr nicht angelegt werden konnte.
Ich verwende auch keine globalen Variabeln und "register_globals" steht auf "off".
Dann ist ja gut. Dein ursprüngliches Beispiel mit der einfachen Variable ließ mich zu der Vermutung kommen. Mit Array wär das nicht passiert.
echo "$verabschiedung $name";