Maison >développement back-end >tutoriel php >La différence entre les variables statiques statiques et les variables ordinaires en php

La différence entre les variables statiques statiques et les variables ordinaires en php

迷茫
迷茫original
2017-01-24 14:33:041371parcourir

Quelle est la différence entre les variables statiques et les variables ordinaires ? Pour de nombreux amis qui sont nouveaux dans PHP, cela n'est peut-être pas facile à comprendre. Aujourd'hui, nous allons examiner la différence entre les variables statiques et les variables ordinaires dans PHP Friends. qui en a besoin peuvent Pour référence,

La différence entre les variables statiques statiques et les variables ordinaires en php

Ajouter du static devant la variable pour former une variable statique (static variable).

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 se trouvent dans chaque fichier source. . Efficace. 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 utilisé dans d'autres unités de fichiers Référencé;
La différence entre les variables locales statiques et les variables locales ordinaires : les variables locales statiques ne sont initialisées qu'une seule fois, et la fois suivante est basée sur la valeur du résultat précédent;
La différence entre les fonctions statiques et fonctions ordinaires : il n'y a qu'une seule copie de la fonction statique dans la mémoire. Les fonctions ordinaires conservent une copie à chaque fois qu'elles sont appelées.

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 toute l'exécution du programme)

2) Initialisation : Les variables statiques globales non initialisées seront automatiquement initialisées par le programme à 0 ( la valeur d'un objet automatique est arbitraire sauf s'il est 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. Vous pouvez modifier les variables du même nom dans 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, à moins qu'il ne soit explicitement initialisé)
Portée : la portée est toujours une portée locale Lorsque la fonction ou le bloc d'instructions qui la 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 la 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, elle est toujours dans le static zone de stockage .

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 sont également Fournit 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, en utilisant 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. : static $int = 1 2; Cette méthode est fausse et static $int = 1; Cette méthode de déclaration est correcte.

Merci d'avoir lu, j'espère que cela pourra vous aider, merci pour votre soutien à ce site !

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