Variablenübergabe bei Funktion
Michael Kaczalak
- php
0 Ashura0 Vinzenz Mai0 Ashura0 Chris0 Vinzenz Mai
0 Der Martin
0 Tobias Kloth
Hallo,
kann mir jemand sagen, warum das nicht funktioniert?
<?php
$array['test'] = "hallo";
echo $array['test']; // Ausgabe: hallo
function array_ausgabe($var) {
echo $array[$var];
}
array_ausgabe("test"); // keine Ausgabe ? Warum
?>
Danke für die Aufklärung...
Hallo Michael.
kann mir jemand sagen, warum das nicht funktioniert?
<?php
$array['test'] = "hallo";
echo $array['test']; // Ausgabe: hallo
function array_ausgabe($var) {
echo $array[$var];
}
array_ausgabe("test"); // keine Ausgabe ? Warum?>
Woher soll die Funktion array\_ausgabe() von deinem global deklarierten Array $array wissen?
Übergib diesen als zweiten Parameter der Funktion array\_ausgabe(), dann weiß diese auch, worauf sie sich beziehen soll.
Im Übrigen solltest du in der Entwicklungsphase \*immer\* [error_reporting](http://de2.php.net/manual/en/function.error-reporting.php)([E_ALL](http://de2.php.net/manual/en/ref.errorfunc.php#e-all)) nutzen.
Einen schönen Sonntag noch.
Gruß, Ashura
--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
[<mathbr:del.icio.us/>](http://del.icio.us/mathbr)
Hallo Ashura,
Woher soll die Funktion array_ausgabe() von deinem global deklarierten Array $array wissen?
Umsteiger auf PHP werden sich möglicherweise die Frage stellen:
"Warum sind in PHP globale Variablen nicht global?"
Freundliche Grüße
Vinzenz,
der's weiß und der der Maxime anhängt: Sowenige globale Variablen wie möglich, nur so viele wie unbedingt nötig.
Hallo Vinzenz.
Umsteiger auf PHP werden sich möglicherweise die Frage stellen:
"Warum sind in PHP globale Variablen nicht global?"
Antwort: sie sind es. Damit gelten sie aber auch nur im globalen Geltungsbereich (=Scope). PHP ist nicht JS und daher haben Funktionen ihren eigenen Geltungsbereich.
Sowenige globale Variablen wie möglich, nur so viele wie unbedingt nötig.
Absolute Zustimmung.
Auch sollten notwendige Variablen auch tatsächlich als Parameter an Funktionen übergeben werden und möglichst auf das global-Schlüsselwort verzichtet werden.
Einen schönen Sonntag noch.
Gruß, Ashura
Hallo,
Auch sollten notwendige Variablen auch tatsächlich als Parameter an Funktionen übergeben werden und möglichst auf das global-Schlüsselwort verzichtet werden.
... oder aber eine "Referenz" benutzt werden, damit man auch speicherplatzkritische Dinge noch sauber (universell) coden kann.
LG
Chris
Hallo Ashura,
Umsteiger auf PHP werden sich möglicherweise die Frage stellen:
"Warum sind in PHP globale Variablen nicht global?"
ich habe die Frage ganz bewußt so formuliert. Sei es in C, sei es in Basic (ja und sei es in Javascript): Auf globale Variablen kann man global zugreifen, sie stehen überall (eben global) zur Verfügung: ob dies im Scope eines Moduls oder im Scope einer Funktion oder im Scope eines Blockes ist. Eine Einschränkung gibt es, wie Martin bereits erwähnt hat, wenn die globale Variable im untergeordneten Scope durch eine lokale Variable gleichen Namens überdeckt wird.
Antwort: sie sind es. Damit gelten sie aber auch nur im globalen Geltungsbereich (=Scope).
Das ist ja gerade die Problematik, vor der die Umsteiger stehen, dass der globale Geltungsbereich eben _nicht_ global ist, sondern eingeschränkt :-)
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
Umsteiger auf PHP werden sich möglicherweise die Frage stellen:
"Warum sind in PHP globale Variablen nicht global?"
guter Hinweis. Da ich selbst erst neulich darüber gestolpert bin, möchte ich hier nochmal betonen: Das ist eine ungewöhnliche Eigenheit von PHP.
In den meisten klassischen Programmiersprachen heißt global nämlich, dass die entsprechenden Variablen auch in allen untergeordneten Scopes verfügbar und gültig sind, sofern sie nicht durch gleichnamige lokale Variablen (oder Übergabeparameter, was meistens dasselbe ist) verdeckt werden.
Sowenige globale Variablen wie möglich, nur so viele wie unbedingt nötig.
Full ACK!
Schönen Abend noch,
Martin
Hallo Michael,
kann mir jemand sagen, warum das nicht funktioniert?
Weil die Variable $array innerhalb der Funktion nicht definiert ist. Lies mal die Dokuseite zum Geltungsbereich von Variablen.
Grüße aus Nürnberg
Tobias