2014-01-29 10 views
5

wir eine Funktion in PHP So rufen:Sind Unamed Variablen in Function Call Static

do_something('foodabaa'); 
function do_something($subject) 
{ 
    static $pattern = '~foo~'; 
    return preg_replace($pattern, 'bar', $subject); 
} 

Ist der Neuwert bar statisch, oder ist es dynamisch, so dass jeder Aufruf der Funktion neu initialisiert es?

Fügen Sie auf jeden Fall Informationen über andere Programmiersprachen außer PHP hinzu.

+0

In Ihrem Beispiel ist dieser Wert sowieso statisch, da Sie die Stringkonstante 'bar' verwenden. – hindmost

+0

Vielleicht haben Sie Ersatz und Muster verwechselt? – hindmost

+0

@hindmost ... Nein, die Frage ist ziemlich klar, ich habe eine statische Variable als Referenz gesetzt. Ich bin nur daran interessiert, ob "bar" statisch oder dynamisch ist, ich nehme an, dass es statisch ist. – gwillie

Antwort

1

Von PHP documentation (Beispiel # 5):

function test() 
{ 
    static $a = 0; 
    echo $a."\n\r"; 
    $a++; 
} 

Nun wird $ a nur in ersten Aufruf der Funktion initialisiert und jedes Mal die Test() Funktion aufgerufen wird, wird es den Wert drucken $ a und erhöhen Sie es.

Also, wenn Sie es zweimal anrufen:

test(); 
test(); 

Rückkehr sein wird:

0 
1 

Lassen zu Ihrem Beispiel zurück. Es gibt die gleiche Situation, $pattern wird nur einmal initialisiert.

Innen C/C++

void foo() 
{ 
    static int a = 0; 
    printf("%d", a); 
    x++; 
} 

int main() 
{ 
    foo(); 
    foo(); 
    return 0; 
} 

Ausgang wird sein:

0 
1 

, dass das gemeinsame Verhalten in vielen Sprachen ist die statischen Variablen verwenden.

+0

Danke für die Antwort, aber ich frage nicht nach statischen Variablen, die mit 'static' Schlüsselwort deklariert werden, sondern mit unamed/anonymen Variablen. – gwillie

+0

Was meinst du als unbenannte/anonyme Variable? – Kasyx

+0

@Kasyx ... Wie ist 'trim ('string')': ist ''string'' statisch oder reinitialisiert bei jedem Aufruf, aber ich spreche innerhalb einer Funktion, wie in der Frage. Ich nehme an, es ist statisch, da PHP/Entwickler wissen würden, dass es sich nie ändern könnte, sondern nur eine Verifizierung wollte. Würde es hassen, eine falsche Einstellung zu entwickeln, wenn Sie wissen, was ich meine – gwillie

Verwandte Themen