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
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.