dedlfix: Multidimensionale Arrays

Beitrag lesen

echo $begrüßung;

$_data['Fröhlich'] = "Fritz";
$_data['Fröhlich']['Adamski'] = 'Abraham';  ### Fehler! Subelement muss vorhanden sein
Auf jeden Fall kommt dummes Zeug dabei heraus...

Ja, es steht dann "Aritz" in $_data['Fröhlich'].

Eigentlich sollte das zumindest einen Fehler geben. wahlweise

Gibt es aber nicht, weil hier PHPs automatische Typumwandlung zusammen mit String access and modification by character zuschlägt. Du hast einen String "Fritz" vorliegen. Auf dessen Zeichen kann man mit [index] zugreifen. "Fritz"[0] ist also das F. Da für den Index nur Zahlen verwendet werden können, wandelt PHP das 'Adamski' in eine Zahl um. Gemäß den Typecast-Regeln für Strings ergibt (int)'Adamski' also 0. Da man ein Zeichen nur mit einem anderen Zeichen, nicht aber mit mehreren überschreiben kann, wird nur das A von 'Abraham' genommen und ersetzt das F.

(Ja, ich weiß, "Fritz"[0] ist keine gültige PHP-Syntax. Statt "Fritz" muss eine Variable stehen.)

echo "$verabschiedung $name";