Hallo,
ich will ein PHP-Script als Content-Element laufen lassen, was bei mir nicht funktioniert. Deshalb habe ich aus einem dicken Buch dieses Simpel- Script übernommen, was aber auch nicht richtig arbeitet.
<?php
$var=100;
function test() {
global $var;
return $var;
}
$erg = test();
if ($erg)
echo "Das Ergebnis ist ".$erg;
else
echo "Variable wurde nicht gesetzt";
?>
Ziel soll sein, eine eingangs definierte Variable in einer Funktion zu verarbeiten. Nach aller Programmierlogik sollte eigentlich der IF- Zweig erscheinen. Ich erhalte aber jedes Mal des ELSE- Zweig...
Definiere ich die Variable innerhalb der Funktion, klappt alles korrekt (kein Wunder). eine Variante mit STATIC- Variablen hat das gleiche Ergebnis gebracht.
Da ich davon ausgehe, dass dieses Script korrekt ist, vermute ich die Fehlerquelle bei der Variablenübergabe. Und hier verdächtige ich die Umgebung von Typo3 als Verursacher. Auf der Strecke kenne ich mich aber nicht aus. Vielleicht weiss ja jemand in der weiten Welt was zu dem Problem.
Schönen Tag noch
Wolfgang Erdmann
Hi!
Ich denke, dass Script ist falsch - ich kenne mich da aber mit den Vererbungen, etc. nicht so ganz aus.
Meine Meinung nach definierst du eine globale Variable innerhalb der Funktion OHNE Wertzuweisung. Da du den selben Namen verwendest löschst du $erg, daher ist der Inhalt 0 (NULL).
Warum machst du nicht sowas?
function test($var) {
return $var;
}
$erg = test($var);
Grüße
McGregor
Hallo,
vielen Dank für die prompte Antwort. Ich verstehe das Script so, dass zunächst die Variable initialisiert wird. Innerhalb der Funktion wird dann mitgeteilt, dass die Variable global sein soll. (Da muss natürlich der gleiche Name verwendet werden...) Dann wird der Variablenwert als Rückgabewert der Funktion zugewiesen.
Außerhalb der Funktion erfolgt dann nur noch die Auswertung.
Und wie gesagt: Das Beispiel ist aus dem Buch 'PHP4 + MySQL' von DataBecker S. 102/103.
Hier nochmal das Originalscript:
<?php
$var = 100;
function test() {
return $var;
}
$erg = test();
if ($erg)
echo "Das Ergebnis ist ".$erg;
else
echo "Variable wurde nicht gesetzt";
?>
Schönen Tag noch
Wolfgang Erdmann
McGregor schrieb
Hi!
Ich denke, dass Script ist falsch - ich kenne mich da aber mit den Vererbungen, etc. nicht so ganz aus.
Meine Meinung nach definierst du eine globale Variable innerhalb der Funktion OHNE Wertzuweisung. Da du den selben Namen verwendest löschst du $erg, daher ist der Inhalt 0 (NULL).
Warum machst du nicht sowas?
Grüße
McGregor