Maison >développement back-end >Problème PHP >Quelle est la différence entre les variables statiques et les variables ordinaires en php

Quelle est la différence entre les variables statiques et les variables ordinaires en php

青灯夜游
青灯夜游original
2022-01-27 17:10:374396parcourir

Différence : 1. Les variables statiques ne sont initialisées qu'une seule fois, tandis que les variables ordinaires peuvent être initialisées plusieurs fois. 2. La portée des variables globales ordinaires couvre l'ensemble du programme source. Lorsqu'un programme source se compose de plusieurs fichiers source, les variables globales ordinaires sont valides dans chaque fichier source ; tandis que les variables globales statiques ne sont valides que dans le fichier source dans lequel se trouve la variable. défini. Valable dans.

Quelle est la différence entre les variables statiques et les variables ordinaires en php

L'environnement d'exploitation de ce tutoriel : système windows7, version PHP7.1, ordinateur DELL G3

Ajoutez du statique devant la variable pour former une variable statique (variable statique).

La différence entre les variables statiques et les variables ordinaires est que la portée des variables globales non statiques s'étend sur l'ensemble du programme source. Lorsqu'un programme source se compose de plusieurs fichiers source, les variables globales non statiques sont valides dans chaque fichier source. Les variables globales statiques limitent leur portée, c'est-à-dire qu'elles ne sont valides que dans le fichier source dans lequel la variable est définie et ne peuvent pas être utilisées dans d'autres fichiers source du même programme source. Étant donné que la portée des variables globales statiques est limitée à un fichier source et ne peut être partagée que par les fonctions de ce fichier source, les erreurs peuvent être évitées dans d'autres fichiers source.

La différence entre les variables statiques et les variables ordinaires :

La différence entre les variables globales statiques et les variables globales ordinaires : les variables globales statiques ne sont initialisées qu'une seule fois pour éviter qu'elles ne soient référencées dans d'autres unités de fichiers ;
La différence entre les variables locales statiques ; variables et variables locales ordinaires : les variables locales statiques ne sont initialisées qu'une seule fois, et la fois suivante est basée sur la dernière valeur du résultat ;
La différence entre les fonctions statiques et les fonctions ordinaires : les fonctions statiques n'ont qu'une seule copie en mémoire et les fonctions ordinaires conservent une copie pour chaque appel.

Ajoutez le mot-clé static avant la variable globale, et la variable globale est définie comme une variable statique globale.

1) Emplacement en mémoire : zone de stockage statique (la zone de stockage statique existe pendant tout l'exécution du programme)

2) Initialisation : Les variables statiques globales non initialisées seront automatiquement initialisées à 0 par le programme (la valeur de l'objet automatique est Arbitraire , à moins qu'il ne soit explicitement initialisé)

3) Portée : Les variables statiques globales ne sont pas visibles en dehors du fichier dans lequel elles sont déclarées. Exactement du point de définition à la fin du fichier.

Avantages des variables statiques :

ne sera pas accessible par d'autres fichiers. Les variables du même nom peuvent être utilisées pour modifier d'autres fichiers sans conflit.

Emplacement en mémoire : Zone de stockage statique

Initialisation : Les variables statiques globales non initialisées seront automatiquement initialisées à 0 par le programme (la valeur de l'objet automatique est arbitraire sauf s'il est explicitement initialisé)
Portée : Rôle La portée est toujours une portée locale Lorsque le bloc de fonction ou d'instruction qui le définit se termine, la portée se termine.

Remarque : lorsque static est utilisé pour modifier des variables locales, cela modifie l'emplacement de stockage des variables locales de la pile d'origine vers une zone de stockage statique. Cependant, la variable statique locale n'est pas détruite après avoir quitté la portée, mais réside toujours en mémoire jusqu'à la fin du programme, mais nous ne pouvons plus y accéder.
Lorsque static est utilisé pour modifier une variable globale, cela change la portée de la variable globale (elle n'est pas visible en dehors du fichier dans lequel elle est déclarée), mais ne change pas son emplacement de stockage, qui est toujours dans la zone de stockage statique .

Exemple de fonction ordinaire :

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

Pour définir la variable $w3sky comme statique, le code est le suivant :

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

Les variables statiques fournissent également un moyen de gérer les fonctions récursives. Une fonction récursive est une méthode qui s'appelle elle-même. Soyez prudent lorsque vous écrivez des fonctions récursives, car elles peuvent réapparaître indéfiniment sans sortie. Assurez-vous d'avoir un moyen d'interrompre la récursion. La fonction simple suivante compte récursivement jusqu'à 10 et utilise la variable statique $count pour déterminer quand s'arrêter. Exemple de variables statiques et de fonctions récursives :

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

Remarque : les variables statiques ne peuvent pas être déclarées sous forme d'expressions. Par exemple : static $int = 1. +2; Cette façon de déclarer est fausse, mais static $int = 1;

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn