variable in string
waldemar
- php
0 Dieter Raber0 wahsaga0 Thomas Luethi0 Thomas Luethi0 wahsaga0 Thomas Luethi0 wahsaga
0 Tom
Hellö
php 4.3.3 gibt mir einen feinen fehler, wenn ich versuche in einem string eine variable auszugeben, die ein einfaches anführungszeichen enthält. so ist es nicht fehlerlos möglich:
echo " meine variable: $_SESSION['name'] blabla";
sich ausgeben zu lassen. wohl aber folgendes:
$varname = "name";
echo " meine variable: $_SESSION[$varname] blabla";
nur weiss ich nicht, ob das ein bug in der php 4.3.3 ist (in 4.3.1 funktioniert nämlich alles prima), oder ein "feature". ob mir da jemand helfen kann, oder verraten könnte, wo ich hilfe kriegen könnte?
waldemar.
Hallo,
Strings zwischen " und " werden geparst, zwischen ' und ' nicht, d.h., bei "" entfallen die '' im Array.
Du kannst also entweder so schreiben wie in Deiner Variante 2 oder
echo ' meine variable: ' . $_SESSION[$varname] . ' blabla';
Ich weiss auch nicht genau, seit wann das so ist, aber ich habe auch den Eindruck, das sei relativ neu. Du musst Dich wohl oder uebel durch die change_logs bei http://www.php.net wuehlen.
Dieter
hi,
php 4.3.3 gibt mir einen feinen fehler, wenn ich versuche in einem string eine variable auszugeben, die ein einfaches anführungszeichen enthält. so ist es nicht fehlerlos möglich:
echo " meine variable: $_SESSION['name'] blabla";
hat der fehler auch einen namen?
gruss,
wahsaga
Hallo,
echo " meine variable: $_SESSION['name'] blabla";
Warum das in PHP 4.3.3 nicht funktioniert, ist mir raetselhaft.
Hinweis: Die einfachen Anfuehrungszeichen sind _in_diesem_Fall_
nicht notwendig. Auch folgendes ist "valide":
echo " meine variable: $_SESSION[name] blabla";
Siehe auch:
Abschnitt "note:" unter
http://www.php.net/manual/en/language.types.array.php#AEN3791
Vielleicht hilft Dir auch das weiter:
http://www.php.net/manual/de/language.types.string.php#language.types.string.parsing
Gruesse,
Thomas
Hallo,
Sorry, Nachtrag.
Ich sollte mir endlich abgewoehnen, Links auf die deutsche
Version des Manuals zu posten.
http://www.php.net/manual/de/language.types.string.php#language.types.string.parsing
Wieder einmal stand die Antwort naemlich nur in der
englischen Version:
http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.simple
3 Beispiele, die funktionieren:
// Works but note that this works differently outside string-quotes
echo "A banana is $fruits[banana].";
// Works
echo "A banana is {$fruits['banana']}.";
// Works
echo "A banana is " . $fruits['banana'] . ".";
1 Beispiel, das nicht funktioniert - entspricht der Syntax
von waldemar:
// Won't work, use braces. This results in a parse error.
echo "A banana is $fruits['banana'].";
Gruesse,
Thomas
Hi,
vielen dank. mein problem ist nur, dass ich die bisherig funktionierende syntax an sehr, sehr vielen stellen verwendet habe, die ich mich nich so ohne weiteres zu ändern traue. da ich php 4.3.3 bislang nur auf einem testsystem benutze, bin ich mir jetzt nicht sicher, ob es sich lohnt eine stable php5 abzuwarten, die vielleicht die alte syntax wieder so wie die 4.3.1 parst (auch wenn die syntax nicht wirklich korrekt ist, siehe die von dir genannten beispiele) oder ob ich mich nun einfach dranmache, die syntax an allen stellen zu ändern.. in den changelogs habe ich bislang leider nichts aufschlussreiches gefunden.
gruss,
waldemar
Hallo,
»»da ich php 4.3.3 bislang nur auf einem testsystem benutze, bin ich mir jetzt nicht sicher, ob es sich lohnt eine stable php5 abzuwarten, die vielleicht die alte syntax wieder so wie die 4.3.1 parst
Vertraue nicht darauf. Generell werden sie nicht alte Fehler wieder einbauen, und ganz sicher kann ich dir sagen, dass die PHP5beta2 dieses Fehlverhalten nicht aufweist.
gruß,
Severin
Hallo,
[...] bin ich mir jetzt nicht sicher, ob es sich lohnt eine stable php5 abzuwarten, die vielleicht die alte syntax wieder so wie die 4.3.1 parst (auch wenn die syntax nicht wirklich korrekt ist, siehe die von dir genannten beispiele) oder ob ich mich nun einfach dranmache, die syntax an allen stellen zu ändern.. in den changelogs habe ich bislang leider nichts aufschlussreiches gefunden.
Dass die von Dir verwendete Schreibweise bisher "funktioniert" hat,
war Glueckssache.
"Stabil/sicher" (und in guten Lehrbuechern u.s.w. empfohlen)
waren eigentlich bisher immer nur die Schreibweisen
a) mit Unterbrechung des Strings:
echo "A banana is " . $fruits['banana'] . ".";
b) mit den geschweiften Klammern:
echo "A banana is {$fruits['banana']}.";
Seite wann
echo "A banana is $fruits[banana].";
funktioniert bzw. valide ist, weiss ich nicht.
Ich denke, Du musst in den sauren Apfel beissen und
alle Deine Skripts anpassen.
Diese Grundlagen der Syntax werden IMHO konstant bleiben.
Gruesse,
Thomas
hi,
echo " meine variable: $_SESSION['name'] blabla";
Warum das in PHP 4.3.3 nicht funktioniert, ist mir raetselhaft.
es steht aber auf der seite http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.simple explizit als _nicht_ funktionierend:
// Won't work, use braces. This results in a parse error.
echo "A banana is $fruits['banana'].";
gruss,
wahsaga
Hallo,
es steht aber auf der seite http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.simple explizit als _nicht_ funktionierend:
Hab ich inzwischen auch entdeckt: [pref:t=62343&m=352437]
;-)
Moral: Trau' nie einer Uebersetzung...
Gruesse,
Thomas
hi,
Hab ich inzwischen auch entdeckt: [pref:t=62343&m=352437]
ja, den post hatte ich nur überflogen, und dabei übersehen, dass du die analogie zum beispiel der frage schon entdeckt hattest.
gruss,
wahsaga
Hello,
Hinweis: Die einfachen Anfuehrungszeichen sind _in_diesem_Fall_
nicht notwendig. Auch folgendes ist "valide":echo " meine variable: $_SESSION[name] blabla";
Dann probier doch mal $_SESSION[class] ... oder $_SESSION[SID] nachdem eine Session gestartet wurde...
Grüße
Tom