array-Frage: [auto.id]

10/03/2013 - 23:03 von Thomas Zenker | Report spam
Hallo,
mit <pre> und print_() ausgegeben:
in einem
Object
( [auto.id] => 2

steht ein array-Name mit Punkt-Trenner.
Was bedeutet der/das denn?

Wenn ich jetzt mit print_($this->auto.id);
wird 'id' ausgegeben, nicht '2'.

Gruß, Thomas
 

Lesen sie die antworten

#1 Thomas Mlynarczyk
11/03/2013 - 00:40 | Warnen spam
Thomas Zenker schrieb:
Object
( [auto.id] => 2
Wenn ich jetzt mit print_($this->auto.id);
wird 'id' ausgegeben, nicht '2'.



| $this->auto.id

bedeutet

| ($this->auto) . (id) // Stringverkettung mit dem `.`-Operator

Da es `$this->auto` nicht gibt, liefert dieser Teil des Ausdrucks `null`
zurück, was dann im Rahmen der Stringverkettung als Leerstring
interpretiert wird. `id` wàre rein syntaktisch eine Konstante. Da aber
keine solche definiert ist, nimmt PHP einfach an, es wàre der String
"id" gemeint.

| $this->{'auto.id'}

müßte wie gewünscht funktionieren. Diese etwas abenteuerliche Syntax
erlaubt die Verwendung beliebiger Ausdrücke als Bezeichner. Allerdings
hàtte Dir obiges `$this->auto.id` eigentlich mindestens eine
Fehlermeldung liefern müssen, nàmlich bzgl. der nicht definierten
"Konstante" `id`. Ich bin mir jetzt nicht sicher, ob der Zugriff auf die
nicht definierte Objekteigenschaft `$this->auto` eine Notice auslöst,
was dann eine weitere Fehlermeldung bedeuten würde. Deshalb immer:

| error_reporting( -1 ); // absolut alles, ohne Ausnahme

setzen.

Gruß,
Thomas

Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!
(Coluche)

Ähnliche fragen