$begrüßung-krümelkackerisch;
echo $b; gibt den Wert von $b aus. Summe() wird für diese Ausgabe nicht benötigt. Summe() wird benötigt, um den Wert von $b vorher zu berechnen. Das ist ein Unterschied. Du wirst ihn möglicherweise krümelkackerisch finden, aber das stört mich nicht.
;-) Ich find und fand gar nichts "krümelkackerisch", bin doch froh dass mir geholfen wird!
Ich hab das Beispiel 12-1: http://www.php.net/manual/de/language.variables.scope.php erweitert.
Es wäre besser gewesen, wenn du den Code per Copy&Paste hier als Text eingefügt hättest.
<?php
$a = 1;
$b = 2;
$c = 4;
function Summe()
{
global $a, $b;
$b = $a + $b; // $b ist 3
function Summe2()
{
global $a, $b, $c;
$c = $b + $c; // $c 7
}
}
Summe();
echo "$b <-- soll 3 sein <br>";
//Summe2();
echo "$c <-- soll 7 sein";
?>
Du verschachtelst Funktionsdeklarationen. Dies ist unter PHP nicht sinnvoll, da Funktionen immer global abgelegt werden. Außerdem erfolgt die Deklaration von Summe2() erst, wenn Summe() ausgeführt wird. Dies wird dann aber jedes Mal versucht. Somit muss Summe() einmal aufgerufen worden sein, bevor Summe2() benutzt werden kann.
Hab ich voller Verwunderung auch schon festgestell, als ich Summe(); auskommentiert hatte.
Du kannst aber Summe() kein zweites Mal aufrufen, ohne dass dein Script mit einem Fatal Error abgebrochen wird, weil Summe2() bereits existiert.
Hilfe, dass ist für mich bis jetzt noch eignetlich gar nicht zu verstehen...
Wie ich auch bereits sagte, ist es besser, wenn eine Funktion Parameter entgegennimmt und daraus ein Ergebnis berechnet anstatt Variablen aus anderen Geltungsbereichen zu verändern.
Ich hab das sinnlose Bsp. nur gemacht um mit dem "Geltungsbereich von Variablen" etwas vertraut zu werden, dabei bin ich wohl dummerweise ziemlich ins function-Fettnäpfchen getreten! War nicht meine Absicht... Das Bsp. aus dem PHP-manual hat mir aber irgendwie keine Vorstellung des "Geltungsbereichs" gegeben. Für mich waren die () der Funktion identisch mit den () von for. Üble Täuschung von mir!
... wie lautet die Aufgabenstellung?
Es ging nicht um Funktionen, sondern um eine Bildung einer Vorstellung, wie ich Variablen uneingeschränkt über mein ganzes Script verwenden kann. Ich als eine Art PHP-Dau, hab mich durch die Einschränkung, die da plötzlich auf mich zu kam sehr unwohl gefühlt.
Aber das war dann wohl auch noch eine Täuschung weil ich in meinem Script eigentlich gar keine Funktion habe, sonder nur ein zwei "for und ein zwei "if". Damit sei aber gar keine Einschränkung mit dem "Geltungsbereich von Variablen" da wurde hier gesagt.
Somit schein das Problem ein anderes zu sein... Mir summt jetzt aber nur noch die Birne (hab inzwischen eigentlich das Problem durch hin und herschieben von Code "gelöst") aber nun tritt an anderer Stelle eine Ungereimtheit auf...
Ich muß neu daran gehen um ein Problem zu formulieren.
Merci
Thomas*