Hi,
zunächst mal, siehe Handbuch: Variable scope.
Dort siehst du, dass du mit global _zunächst mal_ das Gegenteil erreichst: Du kannst eine Variable deren Gültigkeit _außerhalb_ der Funktion ist in die Funktion _hinein_ transportieren.
Aber ja, im Endeffekt kannst du diesen Effekt so erzeugen:
$summe = 0;
function add($a, $b) {
global $summe;
$summe = $a+$b;
}
add(12,3);
echo $summe;
Das ist allerdings unglücklich bzw. schlechter Stil:
- Eine Funktion verfügt über eine Rückgabemöglichkeit - nutze sie! Dadurch kannst du sie nämlich in Ausgaben einbauen. Wenn du schreiben willst:
Das Ergebnis von 12 + 3 ist 15
heißt das bei dir:
$summe = 0;
$a = 12;
$b = 3;
add($a, $b);
echo "Das Ergebnis von $a + $b ist $summe";
Schöner wäre
$a = 12;
$b = 3;
echo "Das Ergebnis von $a + $b ist ".add($a, $b);
- Du verlierst über kurz oder lang die Übersicht über deinen Code wenn man nicht sieht was rein und was rausgeht. Es gibt u.U. Situationen, wo man ganz schöne Klimmzüge machen muss um ohne solche globalen Variablen auszukommen, aber besser ist es - daher:
i) Verwende für Ergebnisse von Funktionen das return-Statement
ii) Übergebe alle in der Funktion benötigten Informationen als Parameter
Spätestens wenn du eine Funktion an einer anderen Stelle wieder verwenden willst wirst du dich fragen warum irgendwas nicht funktioniert oder ungewöhnliche Nebeneffekte hat.
Beispiel:
$summe = 0;
add(1,1);
add($summe,2);
echo $summe;
Was würdest du, wenn du diesen Code _liest_ erwarten? Das 2 rauskommt. Was kommt raus? 4...
MfG
Rouven
--
-------------------
ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
-------------------
ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(