PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : was soll den static in ner funktion?


|Coding
01.09.2002, 17:56:07
hi,

wie aus dem topic schon zu entnehmen ist, ich habe mich mal ein bissel durch scripte von php-voll-profies gewühl und da ist mir eine funktion ins auge gefallen...

function &sülz(){
static $variable;
.
.
.
}

kann mir einer sagen was das einfache & und was static bewirkt?

ich bin leich durcheinander wegen dem &....

Dago
01.09.2002, 18:20:25
http://www.php.net/manual/sv/printwn/language.variables.scope.php#AEN4419

Das meint (so, wie ich es interpretiere),
dass diese (static) Variable auch noch nach dem Ende eines Funktions-Durchlaufs vorhanden ist, aber NUR in dieser einen Funktion abgerufen werden kann. Zum Beispiel beim erneuten Aufruf.

Progman
01.09.2002, 18:26:14
22.17. Wie stelle ich Tabellenzeilen abwechselnd farbig dar?
http://www.dclp-faq.de/q-code-tabellenfarbe.html

da ist ein Beispiel mit dem static

|Coding
01.09.2002, 19:08:48
hmm ja.... ich habs nit ganz gecheckt wofür das static gut ist.

heißt static für eine variable das man diese nicht ändern kann?


ok vielleicht ist es etwas schwierig zu erklären...

nun gut... was hat es den mit diesem & vor dem funktions namen auf sich? ist das ein tippfehler? (der mir allerdings schon öffters in verschiedenen scripten ins auge gefallen ist...)

Progman
01.09.2002, 19:58:05
function bla()
{
static $i;
$i++;
echo($i."<br>n");
}

bla();
bla();
bla();
bla();


ich bin mir hier nicht ganz sicher ob es die Zahlen 0-3 oder die Zahlen 1-4 ausgibt.

Static sagt das die Variable beim nächsten aufruf der Funktion noch vorhanden ist und genutzt werden kann. Normalerweise sind ja alle Variablen aus einer Funktion verloren. Im 1. durchlauf ist $i _wahrscheinlich_ "" mit ++ wird der Wert ja incrementieren, wahrscheindlich auf 0. Dies wird dann ausgegeben. Beim nächsten Aufruf ist $i nicht wieder "" sondern hat den Wert als die Funktion beendet wurde, also 0. Dann wird wieder Incrementiert und ausgegeben. Beim nächste aufruf hat $i automatisch den Wert 1. Dann wird wieder incrementiert usw....

|Coding
01.09.2002, 20:01:28
axooooo, hey cool, danke progman. jetzt stellt das natürlich wieder alles in ein anderes licht und lässt neue gedanken blitzen... :-)

ABER was noch nicht geklärt ist, ist das blöde & vor dem funktions namen... ist das ein tipfehler oder beabsichtigt?

Progman
01.09.2002, 21:44:49
ist beabsichtigt. Aber das & kenn ich nur bei Variablen, bei funktionen kenn ich das nicht, ist irgentwas mit Referenzen.

|Coding
01.09.2002, 22:04:11
könntest du das etwas genauer da legen? ich will dat jetzt wissen :-))

Progman
02.09.2002, 11:48:08
http://de.php.net/manual/de/language.variables.php
http://de.php.net/manual/de/functions.returning-values.php

Das 1. dann das 2. Lesen, da steht alles

|Coding
02.09.2002, 20:12:13
thx, jetzt klingelts :-)