Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte grafische Erklärung des Unterschieds zwischen statischen statischen Variablen und gewöhnlichen Variablen in PHP

Detaillierte grafische Erklärung des Unterschieds zwischen statischen statischen Variablen und gewöhnlichen Variablen in PHP

墨辰丷
墨辰丷Original
2018-05-30 09:43:181340Durchsuche

Was ist der Unterschied zwischen statischen Variablen und gewöhnlichen Variablen? Für viele Freunde, die neu bei PHP sind, ist es vielleicht nicht einfach, den Unterschied zwischen statischen Variablen und gewöhnlichen Variablen in PHP zu verstehen Wer es braucht, kann als Referenz

Der Unterschied zwischen statischen statischen Variablen und gewöhnlichen Variablen in PHP

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

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, befinden sich in jeder Quelldatei nicht statische globale Variablen . Effektiv. 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 dies zu verhindern Wird in anderen Dateieinheiten verwendet. Referenziert;
Der Unterschied zwischen statischen lokalen Variablen und gewöhnlichen lokalen Variablen: Statische lokale Variablen werden nur einmal initialisiert und das nächste Mal basiert auf dem vorherigen Ergebniswert;
Der Unterschied zwischen statischen Funktionen und Gewöhnliche Funktionen: Es gibt nur eine Kopie der statischen Funktion im Speicher. Gewöhnliche Funktionen behalten bei jedem Aufruf eine Kopie bei.

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 initialisiert und sind 0 ( Der Wert eines automatischen Objekts ist beliebig, es sei denn, es 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:

wird von anderen Dateien nicht aufgerufen. Sie können Variablen mit demselben Namen in anderen Dateien ohne Konflikte ändern.

Speicherort: statischer Speicherbereich

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

Hinweis: Wenn statische Variablen zum Ändern lokaler Variablen verwendet werden, ändert sich der Speicherort lokaler Variablen vom ursprünglichen Stapel in den 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 Static zum Ändern einer globalen Variablen verwendet wird, ändert sich der Gültigkeitsbereich der globalen Variablen (sie ist außerhalb der Datei, in der sie deklariert ist, nicht sichtbar), aber ihr Speicherort ändert sich nicht, sie befindet sich immer noch in der Statik Lagerfläche.

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. Beispiel für statische Variablen und rekursive Funktionen:

<?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: static $int = 1+2; Diese Methode ist falsch, aber static $int = 1;

Vielen Dank fürs Lesen, ich hoffe, es kann Ihnen helfen, vielen Dank für Ihre Unterstützung dieser Website!

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich sein wird.


Verwandte Empfehlungen:

Detaillierte Erläuterung der Verwendung der Funktion str_pad() in PHP

phpSo implementieren Sie eine PDO-basierte Vorverarbeitung

Detaillierte Erläuterung der Verwendung der Funktion bind_param() in PHP

Das obige ist der detaillierte Inhalt vonDetaillierte grafische Erklärung des Unterschieds zwischen statischen 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