dedlfix: explode möchte nicht Arbeiten

Beitrag lesen

echo $begrüßung;

» $ortplz = Münster,48145

Der Variablen $ortplz wird die Konstante Münster 1) zugewiesen - da diese (vermutlich) nicht definiert ist, weist PHP den Namen der Konstanten als String zu.
Anschließend (Komma-Operator, der niedrigere Priorität als Zuweisungs-Operator hat) wird der Ausdruck 48145 berechnet (dabei kommt 48145 raus) und das Ergebnis verworfen.

Schon falsch. Wenn die Anführungszeichen wirklich fehlen, dann darf das Komma an der Stelle nicht stehen. Das ergibt einen Syntax-Fehler, noch bevor die Steuerung an das Script übergeben wird. Das fehlende Semikolon wäre der nächste Syntax-Fehler.

Bis hierhin ist mir das Verhalten noch verständlich. Ab hier wird's schwammig. Ich versuche mal, das PHP-Verhalten zu erraten.

» $plz= $ortplz[1];

Das array $ortplz enthält nur einen String, $ortplz[1] existiert demnach nicht als Array-Inhalt.
Ich vermute, daß PHP hier $ortplz zu einem String castet (was auf "Münster" herausläuft).

PHP castet nicht einfach ohne Grund. Wenn $ortplz ein Array ist, und das Element 1 nicht vorhanden ist, ergibt das wie bei jedem Zugriff auf nicht vorhandene Variablen als Ergebnis NULL begleitet von einer Notice (in dem Fall: Undefined offset: 1).

Der String könnte dann wiederum als array von Zeichen interpretiert werden, mit [1] wird auf das zweite Zeichen zugegriffen.

Das ist eher eine Erklärung, aber nicht für den vom OP gezeigten Code. Das explode() müsste in dem Fall gar nicht ausgeführt worden sein und $ortplz ein String bleiben.

echo "$verabschiedung $name";