Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen statischen Variablen und gewöhnlichen Variablen in PHP?

Was ist der Unterschied zwischen statischen Variablen und gewöhnlichen Variablen in PHP?

青灯夜游
青灯夜游Original
2022-01-27 17:10:374354Durchsuche

Unterschied: 1. Statische Variablen werden nur einmal initialisiert, während gewöhnliche Variablen mehrmals initialisiert werden können. 2. Der Geltungsbereich gewöhnlicher globaler Variablen ist das gesamte Quellprogramm. Wenn ein Quellprogramm aus mehreren Quelldateien besteht, sind gewöhnliche globale Variablen in jeder Quelldatei gültig, während statische globale Variablen nur in der Quelldatei gültig sind, in der sich die Variable befindet definiert. Gültig innerhalb.

Was ist der Unterschied zwischen statischen Variablen und gewöhnlichen Variablen in PHP?

Die Betriebsumgebung dieses Tutorials: Windows7-System, PHP7.1-Version, DELL G3-Computer

Statisch vor der Variablen hinzufügen, um eine statische Variable (statische Variable) zu bilden.

Der Unterschied zwischen statischen Variablen und gewöhnlichen Variablen besteht darin, dass der Geltungsbereich nicht statischer globaler Variablen das gesamte Quellprogramm umfasst. Wenn ein Quellprogramm aus mehreren Quelldateien besteht, sind nicht statische globale Variablen in jeder Quelldatei gültig. Statische globale Variablen beschränken ihren Gültigkeitsbereich, d. h. sie sind nur innerhalb der Quelldatei gültig, in der die Variable definiert ist, und können nicht in anderen Quelldateien desselben Quellprogramms verwendet werden. Da der Umfang statischer globaler Variablen auf eine Quelldatei beschränkt ist und nur von Funktionen in dieser Quelldatei gemeinsam genutzt werden kann, können Fehler in anderen Quelldateien vermieden werden.

Der Unterschied zwischen statischen Variablen und gewöhnlichen Variablen:

Der Unterschied zwischen statischen globalen Variablen und gewöhnlichen globalen Variablen: Statische globale Variablen werden nur einmal initialisiert, um zu verhindern, dass in anderen Dateieinheiten auf sie verwiesen wird.
Der Unterschied zwischen statischen lokalen Variablen Variablen und gewöhnliche lokale Variablen: statische lokale Variablen werden nur einmal initialisiert und das nächste Mal basiert auf dem letzten Ergebniswert.
Der Unterschied zwischen statischen Funktionen und gewöhnlichen Funktionen: Statische Funktionen haben nur eine Kopie im Speicher, und gewöhnliche Funktionen behalten eine bei Kopie für jeden Anruf.

Fügen Sie das Schlüsselwort static vor der globalen Variablen hinzu, und die globale Variable wird als globale statische Variable definiert.

1) Speicherort im Speicher: statischer Speicherbereich (statischer Speicherbereich existiert während der gesamten Programmausführung)

2) Initialisierung: Nicht initialisierte globale statische Variablen werden vom Programm automatisch auf 0 initialisiert (der Wert des automatischen Objekts ist willkürlich). , es sei denn, er wird explizit initialisiert)

3) Geltungsbereich: Globale statische Variablen sind außerhalb der Datei, in der sie deklariert sind, nicht sichtbar. Genau vom Definitionspunkt bis zum Ende der Datei.

Vorteile statischer Variablen:

Andere Dateien können nicht auf Variablen mit demselben Namen zugreifen, um andere Dateien ohne Konflikte zu ändern.

Speicherort: Statischer Speicherbereich

Initialisierung: Nicht initialisierte globale statische Variablen werden vom Programm automatisch auf 0 initialisiert (der Wert des automatischen Objekts ist beliebig, sofern er nicht explizit initialisiert wird).
Bereich: Rolle Der Bereich ist immer noch ein lokaler Bereich. Wenn die Funktion oder der Anweisungsblock, der ihn definiert, endet, endet auch der Bereich.

Hinweis: Wenn statische Variablen zum Ändern lokaler Variablen verwendet werden, ändert sich der Speicherort lokaler Variablen vom ursprünglichen Stapel in einen statischen Speicherbereich. Die lokale statische Variable wird jedoch nach Verlassen des Gültigkeitsbereichs nicht zerstört, sondern bleibt bis zum Ende des Programms noch im Speicher, wir können jedoch nicht mehr darauf zugreifen.
Wenn statische Variablen zum Ändern einer globalen Variablen verwendet werden, ändert sich der Gültigkeitsbereich der globalen Variablen (sie ist außerhalb der Datei, in der sie deklariert ist, nicht sichtbar), jedoch nicht der Speicherort, der sich immer noch im statischen Speicherbereich befindet .

Beispiel für eine gewöhnliche Funktion:

<?php
function Test() {
  $w3sky = 0;
  echo $w3sky;
  $w3sky++;
  /*函数每次调用时都会将 $w3sky 的值设为 0 并输出 "0"。将变量加一的 $w3sky++ 没有其到效果,因为一旦退出本函数则变量 $w3sky 就不存在了。*/
}
?>

Um die Variable $w3sky als statisch zu definieren, lautet der Code wie folgt:

<?php
function Test() {
  static $w3sky = 0;
  echo $w3sky;
  $w3sky++;
} //本函数每调用Test()都会输出 $w3sky 的值并加一。
 
?>

Statische Variablen bieten auch eine Möglichkeit, mit rekursiven Funktionen umzugehen. Eine rekursive Funktion ist eine Methode, die sich selbst aufruft. Seien Sie beim Schreiben rekursiver Funktionen vorsichtig, da diese ohne Exit auf unbestimmte Zeit rekursiv sein können. Stellen Sie sicher, dass Sie eine Möglichkeit haben, die Rekursion abzubrechen. Die folgende einfache Funktion zählt rekursiv bis 10 und verwendet die statische Variable $count, um zu bestimmen, wann gestoppt werden soll:

<?php
function Test() {
  static $count = 0;
  $count++;
  echo $count;
  if ($count < 10) {
    Test();
  }
  $count--;
}
?>

Hinweis: Statische Variablen können nicht als Ausdrücke deklariert werden +2; Diese Art der Deklaration ist falsch, aber static $int = 1;

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen statischen Variablen und gewöhnlichen Variablen in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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