gloabale variable

bad taste

Erfahrenes Mitglied
hi leudz....

ich hab da eine funktion, in der auch ein array mit daten angelegt wird.

nun würde ich gerne in der datei, die die funktion verwendet auf diesen array zugreifen, also den array global machen. leider finde ich keine möglichkeit, eine in einer funktion verwendete variable global zu machen (anders herum gaht das ja....)....
natürlich kann ich auch einfach mit return den array zurückgeben, und dann $bla = funktion(); schreiben...das will ich aber eigendlich net...

also geht das irgendwie?????

den dieses problem ergibt sich ja auch, wenn man mit einer funktion mehrere variablen zurüchgeben will.....

//bad taste
 
-

Nein, es bleibt dir keine andere Wahl, als das Array per return() zurück zugeben, da es keine Pointer in PHP gibt.

Aber warum willst du das nicht?
 
Nunja, da gibt's eigentlich schon so einige Möglichkeiten.

Zum einen kann man es über Referenzen lösen. Man übergibt der Funktion eine Referenz auf eine Variable. Sieht dann z.B. so aus:
PHP:
<?
function setVar5 (&$var)
{
	$var = 5;
}

$a = 2;
echo "Vor Funktionsaufruf: \$a = $a<br>";
setVar5 (&$a);
echo "Nach Funktionsaufruf: \$a = $a";
?>
Das kaufmännische Und '&' als Zeichen für eine Referenz kann dabei entweder im Funkionskopf oder beim Funktionsaufruf weggelassen werden. Trägt allerdings nicht zur Übersichtlichkeit bei.

Eine zweite Möglichkeit wäre die Verwendung des Arrays $GLOBALS.
Beispiel:
PHP:
<?
function setGlobalVar5($globalVar)
{
	$GLOBALS[$globalVar] = 5;
}

$a = 2;
echo "Vor Funktionsaufruf: \$a = $a<br>";
setGlobalVar5 ('a');
echo "Nach Funktionsaufruf: \$a = $a";
?>

Ich persönlich finde die erste Möglichkeit bequemer und einfacher.



reima
 
hmmm cool

thx @ reima......

also auf das zweite hätte ich auch von selbst kommen können:-)

das erste ist wirklich einfacher, is jedoch in diesem fal nicht so angebracht....

es geht nähmlich darum, bestimmte seiten zu schützen. dafür hab ich ne funktion geschrieben (auth_user()), die einfach aussteigt (exit) oder den rest der seite angibt. ist der user jedoch authorisiert wird ein array mit seinen daten zurückgegeben.
und ich fand es einfach blöd, dass da am anfang $user_data = auth_user() stand........
auch die auth_user(&$user_data) find ich in dem fal net so doll, weil man sie ja vielleicht net immer brauch (die user-daten)
daher find ich die idee (die mir eigendlich auch hätte kommen müssen) es in den $GLOBALS-array zu schreiben am besten frü dieses problem....

also noch mal thx.....

//bad taste
 
Zurück