Funktion: Globale Variable nicht bekannt
Kalle
- php
Hi, Forumler,
habe aus einigen Zeilen Programmcode eine Funktion gemacht, da diese Zeilen mehrfach benötigt werden. Zu meiner Überraschung sind innerhalb der Funktion jedoch globale Variablen nicht bekannt.
$aus = "Ausgabe";
echo " 1.".$aus;
function machwas ( $abc ) {
echo " 2.".$aus;
}
machwas ( "irgendwas" );
echo " 3.".$aus."<br>";
ERGEBNIS:
1.Ausgabe 2. 3.Ausgabe
Die 2.Ausgabe fehlt. Warum ?
Lieben Gruß aus Worms, Kalle
Guten [Tageszeit],
Hi, Forumler,
habe aus einigen Zeilen Programmcode eine Funktion gemacht, da diese Zeilen mehrfach benötigt werden. Zu meiner Überraschung sind innerhalb der Funktion jedoch globale Variablen nicht bekannt.
$aus = "Ausgabe";
echo " 1.".$aus;function machwas ( $abc ) // <--- schau mal hin, was Du als Argument übergeben hast.
{
echo " 2.".$aus;
}machwas ( "irgendwas" );
echo " 3.".$aus."<br>";ERGEBNIS:
1.Ausgabe 2. 3.AusgabeDie 2.Ausgabe fehlt. Warum ?
in der Tat, normale globale Variablen sind in der Funktion nicht bekannt. Dazu muss man sie innerhalb der Funktion mit global übernehmen. Du hast hier aber ein Argument an die Prozedur übergeben. Das ist ein Call-by-Value, den Du da machst. Also eine Kopie von $abc wird an die Funktion übergeben und gar nicht beutzt. Vielmehr versuchst Du in der Funktion $aus auszugeben, das aber nicht übergeben wurde.
Schon dumm gelaufen, gelle?
Liebe Grüße aus http://www.braunschweig.de
Tom
hallo,
function machwas ( $abc ) // <--- schau mal hin, was Du als Argument übergeben hast.
ja, oder du machst es so ;-)
small-step
Hallo,
function machwas ( $abc ) // <--- schau mal hin, was Du als Argument übergeben hast.
ja, oder du machst es so ;-)
Das ist doch nur ein verkürztes Muster. Ich übergebe Variablen und benutze sie auch, also benötige $abc in der Funktion.
Aber danke für den Hinweis, dass man die globalen Variablen INNERHALB der Funktion als global deklarieren muss. Habe sie zusätzlich als Argument übergeben.
Ist also gar nicht notwendig, kann ich wieder streichen.
Kalle.
Hallo Kalle,
es ist sicher sauberer, sie als Argument zu übergeben.
Aber ich will hier keine Diskussion entfachen...
Liebe Grüße aus http://www.braunschweig.de
Tom
hallo kalle,
habe aus einigen Zeilen Programmcode eine Funktion gemacht, da diese Zeilen mehrfach benötigt werden. Zu meiner Überraschung sind innerhalb der Funktion jedoch globale Variablen nicht bekannt.
um eine globale variable in einer funktion nutzen zu können musst du zuerst den geltungsbereich der variable auf die funktion ausweiten. das ganze machst du mit dem befehl 'global'.
in deinem fall würde das beispielsweise so aussehen:
function machwas ( $abc ) {
global $aus;
echo " 2.".$aus;
}
willst du bei mehreren variablen den geltungsbereich erweitern musst du diese variablen durch ein komma trennen, also folgendermaßen:
global $a, $b, $c;
grüße,
small-step