Brett vor dem Kopf
Jens
- php
Guten Tag,
ich habe momentan einen Aussetzer.
Könnte mir bitte jemand sagen wie die folgende Zeile richtig heißen muss?
$row['d_language'] = $row['d_"$language"'];
oder so:
$row['d_language'] = $row['d_.$language];
Die Zeile sollen einen assoziateven Index umbenennen, da er für eine Schablone benötigt wird.
Danke
Moin!
$row['d_language'] = $row['d_"$language"'];
oder so:
$row['d_language'] = $row['d_.$language];
Mal überlegen:
Das, was da als Assoziation dienen soll besteht offensichtlich aus:
"d_" und $language.
Also: 'd_'.$language oder "d_".$language oder "d_$language"
In der Variable sieht das dann etwa so aus:
$row['d_language'] = $row['d_'.$language];
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Guten Tag fastix®,
ja, so ist es richtig.
Noch eine Frage ...
Wann kann man denn bei einem ass. Array, z.B $row['alter'] die Gänsefüsschen weglassen : $row[alter]?
Warum geht beides?
Was, wann wo verwenden?
Danke
Hallo,
Wann kann man denn bei einem ass. Array, z.B $row['alter'] die Gänsefüsschen weglassen : $row[alter]?
Warum ist $foo[bar] falsch?
http://www.php.net/manual/de/language.types.array.php#language.types.array.foo-bar
Ausnahme: Innerhalb von _doppelten_ Anfuehrungszeichen. "$foo[bar]" ist erlaubt:
http://www.php.net/manual/en/language.types.array.php#AEN3791
Gruesse,
Thomas
Moin!
He! Das war meine Frage! Ich! Ich! Ich will zuerst berühmt werden!
:)))
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hello,
Ausnahme: Innerhalb von _doppelten_ Anfuehrungszeichen. "$foo[bar]" ist erlaubt:
http://www.php.net/manual/en/language.types.array.php#AEN3791
...also überall da, wo Konstanten nicht als solche interpretiert werden, darf man die Anführungszeichen und den Index weglassen *?!..*
Oder?
Grüße
Tom
Hi,
ja - sozusagen. Du kannst den Index einfach schreiben wie eine Konstante - sobald die Konstante nicht definiert ist, wird der Index einfach genommen, wie wenn er in " stehen würde...
ABER: Dieses Verhalten erzeugt je nach Konfigration eine Notice, und kann mit jeder neuen PHP-Version als "echter" Fehler eingestuft werden. Zur Sicherheit würde ich an deiner Stelle die Anführungszeichen nie weglassen! Was würdest du beispielsweise machen, falls dein String ohne " plötzlich als Konstante auftauchen würde?
Genauere Beschreibungen findest du in der PHP-Dokumentation (Beispiel mit dem $foo[bar])
E7
Hallo,
Ausnahme: Innerhalb von _doppelten_ Anfuehrungszeichen. "$foo[bar]" ist erlaubt:
http://www.php.net/manual/en/language.types.array.php#AEN3791
...also überall da, wo Konstanten nicht als solche interpretiert werden, darf man die Anführungszeichen und den Index weglassen *?!..*
"Duerfen" ist der falsche Ausdruck. Es ist und bleibt falsch, und "funktioniert"
nur dank der Fehlertoleranz von PHP. Diese koennte sich irgendwann mal aendern.
Noch zur Ergaenzung: Die Beispiele im englischen Manual sind ganz nuetzlich:
http://www.php.net/manual/en/language.types.string.php#AEN3553
Korrekt: echo "Blabla $foo[bar] Blabla";
Korrekt: echo "Blabla {$foo['bar']} Blabla";
Falsch: echo "Blabla $foo['bar'] Blabla";
(gibt in neuen PHP-Versionen einen Parsing Error)
Falsch: echo "Blabla {$foo[bar]} Blabla";
(das letzte Beispiel "funktioniert" aber dank obengenannter Toleranz)
Gruesse,
Thomas
Hi,
wisst ihr, an was mich das erinnert? An Visual Basic:
Dim I as String
For I = 1 to 10
'...
Next I
Ist zwar auch möglich, aber nicht sonderlich sinnvoll...
E7
PS: Auch wenn der Vergleich hinkt - grundsätzlich falsch ist das nicht
Moin!
Wann kann man denn bei einem ass. Array, z.B $row['alter'] die Gänsefüsschen weglassen : $row[alter]?
[pref:t=62408&m=353189]
(Hat wasaga schon beschrieben...)
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hi,
du kannst diese weglassen, wenn du das ganze innerhalb einen Strings machst ("$foo[bar]") oder, sobald alter als Konstante definiert ist
define(ALTER, 18);
E7
Hallo,
$row['d_language'] = $row['d_"$language"'];
oder so:
$row['d_language'] = $row['d_.$language];
Weder noch. Moegliche Loesungen hat Dir fastix schon genannt.
Damit Du sie verstehst, empfehle ich Dir folgendes zur Lektuere:
PHP-Manual: Zeichenketten-Operatoren.
http://www.php.net/manual/de/language.operators.string.php
PHP-Manual: Strings, Einfache und doppelte Anfuehrungszeichen, HEREDOC-Syntax,
http://www.php.net/manual/de/language.types.string.php
Abschnitt davon:
Variablen-Analyse (parsing) in Strings:
http://www.php.net/manual/de/language.types.string.php#language.types.string.parsing
dclp-FAQ: Anführungzeichen oder Hochkomma?
http://www.dclp-faq.de/q/q-stil-anfuehrungszeichen.html
Gruesse,
Thomas