Globale Veriablen in PHP
Andi
- php
<?
$gesamt=0;
$fp="ablage.txt";
if ($datei=fopen($fp,"r"))
{
while (!feof ($datei))
{
$GLOBALS["gesamt"]=fgets($datei);
}
fclose($fp);
}
echo "inhalt:<b>".$gesamt."</b><br>";
jetzt meine Frage: warum schafft es die Variabel $gesamt nicht aus der if anweisung raus?
steht das echo nämlich innerhalb der klammern dann funktinoiert die ausgabe ohne prob.?
Thx und Lg Andi
Hi
$GLOBALS["gesamt"]=fgets($datei);
Wenn du das globals weg lässt, sollte es worken.
CIAO Rhöner
Servus
$GLOBALS["gesamt"]=fgets($datei);
Wenn du das globals weg lässt, sollte es worken.
auch bei $gesamt=fgets($datei);
schafft es die variable nicht aus den klammern raus
$gesamt=fgets($datei);
Du weißt aber schon, dass du den Inhalt der Variable jedesmal in der Schleife überschreibst?
Ich mein ja nur, vielleicht willst du das ja sogar...
$gesamt=fgets($datei);
Du weißt aber schon, dass du den Inhalt der Variable jedesmal in der Schleife überschreibst?
Ich mein ja nur, vielleicht willst du das ja sogar...
while (!feof ($datei))
Die Schleife heißt ja nur dass solange das Ende der Datei nicht erreich ist, soll er jede Zeile auslesen und in dem Array $gesamt speichern.
Die schleife funktioniert das weiß ich, weil innerhalb der klammern gibt das echo ja auch korrekt aus nur schaffts die var nicht aus den klammern raus!!
Wenn $gesamt ein Array sein sollte, dann musst du ihm das erst einmal verklickern.
Und wenn neue Einträge immer an das Ende des Arrays geschrieben werden sollen dann tu das doch und weise nicht immer einer Variable einen neuen Wert zu. Dadurch überschreibst du doch den alten!
hi,
Und wenn neue Einträge immer an das Ende des Arrays geschrieben werden sollen dann tu das doch und weise nicht immer einer Variable einen neuen Wert zu. Dadurch überschreibst du doch den alten!
genau - und was liefert fgets, wenn es am ende der datei angekommen ist? false. und genau das steht dann auch in deiner variablen $gesamt drin.
gruß,
wahsaga
Kann ja sein, dass ich mich irre, aber kommt er da überhaupt hin? Die while beendet doch, wenn er am Ende angekommen ist. Und zwar bevor er weiter lesen kann.
mfg Rhöner
Kann ja sein, dass ich mich irre, aber kommt er da überhaupt hin? Die while beendet doch, wenn er am Ende angekommen ist. Und zwar bevor er weiter lesen kann.
die schleife funktioniert
habs mittlweile geschafft über ein global array
Andi
hi,
$gesamt=0;
ganz normale variable, mitnichten global.
$GLOBALS["gesamt"]=fgets($datei);
du meinst sicher $_GLOBALS
echo "inhalt:<b>".$gesamt."</b><br>";
warum sollte $gesamt jetzt den wert von $_GLOBALS{'gesamt'] haben?
gruß,
wahsaga
hi,
$gesamt=0;
ganz normale variable, mitnichten global.
$GLOBALS["gesamt"]=fgets($datei);
du meinst sicher $_GLOBALS
also ob ich die variable ohne globals mit $GLOBALS oder mit $_GLOBALS schreibe, sie kommt nie aus der klammer raus
echo "inhalt:<b>".$gesamt."</b><br>";
warum sollte $gesamt jetzt den wert von $_GLOBALS{'gesamt'] haben?
weil in meinen schlauen büchlein ("PHP for dummis S.113") steht dass es so funktionieren sollte
Wie aber muss ich eine Variable definieren, dass sie außerhalb ihrer funktion weiterhin gültig ist???
thx Lg Andi
Ich weiß ja nicht, wie es wahsaga geht, aber ich kann keine Funktion erkennen! Und genau aus diesem Grund musst / darfst du nicht mit globalen Variablen umherhantieren.
Ich weiß ja nicht, wie es wahsaga geht, aber ich kann keine Funktion erkennen! Und genau aus diesem Grund musst / darfst du nicht mit globalen Variablen umherhantieren.
ok also wie muss ich im folgenden code $gesamt definieren das die var außerhalb von while und if gültig ist?
<?
$fp="ablage.txt";
if ($datei=fopen($fp,"r"))
{
while (!feof ($datei))
{
$gesamt=fgets($datei);
}
fclose($fp);
}
echo "inhalt:<b>".$gesamt."</b><br>";
Ich will dich ja nicht verunsichern, aber wie wäre es mit einem Tutorial?
Eine sehr gute Hilfedatei findest du hier: http://www.php.net/download-docs.php
Arbeite dich da mal rein. Denn deine Frage ist wirklich ganz der Anfang.
Viel Spaß.
CIAO Rhöner
Hello,
Ich weiß ja nicht, wie es wahsaga geht, aber ich kann keine Funktion erkennen! Und genau aus diesem Grund musst / darfst du nicht mit globalen Variablen umherhantieren.
Mit globalen Variablen darf man machen, was man will. *g*
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello,
$gesamt=0;
ganz normale variable, mitnichten global.
$GLOBALS["gesamt"]=fgets($datei);
aber spätestens hier wird eine globale angelegt.
du meinst sicher $_GLOBALS
siehe http://de2.php.net/manual/en/language.variables.predefined.php
echo "inhalt:<b>".$gesamt."</b><br>";
Der Fehler steckt im Kopf...
jedes fgets() überscheibt die Variable wieder. Das letzte fgets() ist aber false oder leer, da eof und damit ist $gesamt leer.
$GLOBALS .= ...
man achte auf den Operator!
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo wahsaga,
$GLOBALS["gesamt"]=fgets($datei);
du meinst sicher $_GLOBALS
nein, das Array heißt wirklich $GLOBALS: http://www.php.net/manual/de/reserved.variables.php#reserved.variables.globals
Grüße aus Nürnberg
Tobias
Hello Tobias,
$GLOBALS["gesamt"]=fgets($datei);
du meinst sicher $_GLOBALS
nein, das Array heißt wirklich $GLOBALS: http://www.php.net/manual/de/reserved.variables.php#reserved.variables.globals
...und wenn man innerhalb einer Funktion ein Element in einem Globalen Array anlegt, dann ist das Element automatisch global. Stimmt das so, Tobias?
Liebe Grüße aus http://www.braunschweig.de
Tom
hi,
...und wenn man innerhalb einer Funktion ein Element in einem Globalen Array anlegt, dann ist das Element automatisch global. Stimmt das so, Tobias?
na logisch, anders kann ja kaum sein.
wie sollte ein array global sein, seine elemente aber nicht?
gruß,
wahsaga
Hello,
...und wenn man innerhalb einer Funktion ein Element in einem Globalen Array anlegt, dann ist das Element automatisch global. Stimmt das so, Tobias?
na logisch, anders kann ja kaum sein.
wie sollte ein array global sein, seine elemente aber nicht?
Mach Dir nix draus. Jeder kann sich ja mal irren *gg*
Und das mit der $_ Ausnahme hast Du auch verinnerlicht?
Liebe Grüße aus http://www.braunschweig.de
Tom
hi,
Und das mit der $_ Ausnahme hast Du auch verinnerlicht?
sagen wir, ich habe es zur kenntnis genommen - war da halt einfach von der benennung der anderen superglobalen arrays ausgegangen.
verinnerlichen werde ich es wohl nicht, da ich globale variablen nicht brauche :-)
gruß,
wahsaga
Hello,
verinnerlichen werde ich es wohl nicht, da ich globale variablen nicht brauche :-)
Dazu kann ich nur sagen: ich habe auch irgend wann gelernt, an welcher Seite man den Hammer anfassen muss. wenn man damit effektiv Nägel in die Wand schlagen will ...
Liebe Grüße aus http://www.braunschweig.de
Tom