An PHP-Profis (irgend-wie komisch...)

Hallo,

eigentlich kann ich PHP. Aber irgend-wie sehe ich den Fehler nicht:

$ja=„ja“;
$nein=„nein“;

function janein($i) {
if ($i==1) {

$qqq=$ja;} else {$qqq=$nein;};
return $qqq;
}

Eigentlich müßte es funktionieren. Tut aber nicht. Wenn ich anstelle von $ja aber ein „ja“ setze, geht´s. Ich brauche aber die Variable. Was ist also hier los?

Alex

Hi,

eigentlich kann ich PHP. Aber irgend-wie
sehe ich den Fehler nicht:

$ja=„ja“;
$nein=„nein“;

function janein($i) {
if ($i==1) {

$qqq=$ja;} else {$qqq=$nein;};
return $qqq;
}

Eigentlich müßte es funktionieren. Tut
aber nicht. Wenn ich anstelle von $ja
aber ein „ja“ setze, geht´s. Ich brauche
aber die Variable. Was ist also hier los?

schon mal an eval gedacht?

al

schon mal an eval gedacht?

Was? Wieso? Wozu?
Es stimmt doch alles?
Bei Bedarf tut PHP sogar die Datentypen konvertieren (sogar ver. 3)!
Was stimmt bei mir nicht?

Alex

Eine typische PHP-Falle. Alle Variablen, die Du in Unterprogrammen verwendest, sind normalerweise lokal.
Um sie „global zu machen“ musst Du zuerst schreiben:

gloabl $ja, $nein;

stimmt…
wobei: werden die Variablen nicht aus dem Hauptprogramm übernommen? Daß die umgekehrte Richtungs nicht geht, ist klar.

ALex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

wobei: werden die Variablen nicht aus dem
Hauptprogramm übernommen?

NEIN! Ich weiss auch nicht, warum das so ist, aber das ist bei PHP halt so. Es ist uebrigens genau umgekehrt zu Perl - dort sind alle Variablen per default global und muessen mit local oder my lokal gemacht werden.

NEIN! Ich weiss auch nicht, warum das so
ist, aber das ist bei PHP halt so. Es ist
uebrigens genau umgekehrt zu Perl - dort
sind alle Variablen per default global
und muessen mit local oder my lokal
gemacht werden.

komisch: wenn ich die Variablen global definiere, bekomme ich folgende Meldung:

Warning: GLOBAL variable decleration meaningless in main() scope in unterprog.php3 on line 4

Parse error: parse error in unterprog.php3 on line 4

Also habe ich doch recht?

Alex

Sorry, das hab ich wohl nicht genau genug hingeschrieben. Das global $ja, $nein musst Du in der Funktion hinschreiben, wo Du das ja und nein brauchst und nicht im Hauptprogramm.
Naehere Information wie das mit dem Scope ist findest Du in der PHP-Dokumentation unter II Language Reference|Variables|Variable Scope.

Sorry, das hab ich wohl nicht genau genug
hingeschrieben. Das global $ja, $nein
musst Du in der Funktion hinschreiben, wo
Du das ja und nein brauchst und nicht im
Hauptprogramm.

Da hast Du recht… Ich hätte doch nicht 24h durchprogrammieren sollen…

Danke.

Alex