Heim  >  Artikel  >  Backend-Entwicklung  >  Über statische PHP-Variablen

Über statische PHP-Variablen

WBOY
WBOYOriginal
2016-09-19 09:16:34999Durchsuche

Speichern die statischen Variablen von PHP nicht nur eine Kopie im Speicher? Ich habe heute den folgenden Code ausprobiert und habe einige Fragen

<code>function test(){
    static $sum = 0;
    static $sum = 20;
    for ($i=0; $i < 100; $i++) { 
        $sum = $sum + $i; 
    }
    echo  $sum;
}
echo "<pre class="brush:php;toolbar:false">";
    test();//4970
echo "<br />";
    test();//9920
echo "<br />";
    test();//14870
    
    </code>

Da es nur eine Kopie im Speicher gibt, ist ein erneuter Aufruf wie eine direkte Referenz. Warum wurde also $num zum ersten Mal 20 zugewiesen?
Sollte das Ergebnis des ersten Laufs nicht 4950 sein

Antwortinhalt:

Speichern die statischen Variablen von PHP nicht nur eine Kopie im Speicher? Ich habe heute den folgenden Code ausprobiert und habe einige Fragen

<code>function test(){
    static $sum = 0;
    static $sum = 20;
    for ($i=0; $i < 100; $i++) { 
        $sum = $sum + $i; 
    }
    echo  $sum;
}
echo "<pre class="brush:php;toolbar:false">";
    test();//4970
echo "<br />";
    test();//9920
echo "<br />";
    test();//14870
    
    </code>

Da es nur eine Kopie im Speicher gibt, ist ein erneuter Aufruf wie eine direkte Referenz. Warum wurde also $num zum ersten Mal 20 zugewiesen?
Sollte das Ergebnis des ersten Laufs nicht 4950 sein

$i =1;$i<101

//Ergebnis: 4950;

Es ist verständlich, dass die Zeile mit dem Wert 20 die Zeile mit dem Wert 0 oben überschreibt. Da die Variablennamen gleich sind, beträgt sie bei der Initialisierung 20.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn