Maison  >  Article  >  développement back-end  >  Comment utiliser la fonction pour détruire des variables en php

Comment utiliser la fonction pour détruire des variables en php

醉折花枝作酒筹
醉折花枝作酒筹original
2021-08-06 11:15:511658parcourir

Dans l'article précédent, nous avons découvert la méthode de désérialisation d'objets ou de tableaux. Si vous en avez besoin, veuillez lire "Comment désérialiser des tableaux et des objets en PHP". Cette fois, nous allons vous présenter la méthode d'utilisation des fonctions pour détruire des variables. Vous pouvez vous y référer si nécessaire.

Avant de commencer l’article, voyons d’abord ce qu’est la destruction de variables.

La destruction de variables ou d'objets PHP peut être divisée en destruction explicite et destruction implicite :

1. Destruction explicite, lorsque l'objet n'est pas référencé, il sera détruit, nous pouvons donc le supprimer ou lui attribuer NULL

;

2. Destruction implicite. PHP est un langage de script Lorsque la dernière ligne de code est exécutée, toute la mémoire appliquée doit être libérée.

Ce que nous allons présenter aujourd’hui n’est pas une destruction explicite.

Jetons d’abord un coup d’œil à un petit châtaignier.

<?php
class Human { 
  public $name = &#39;张三&#39;; 
  public $gender = null; 
  public function __destruct() { 
      echo &#39;结束!<br />&#39;; 
  } 
} 
$a = new Human(); 
$b = $c = $d = $a;
unset($a);
$d=null;


echo &#39;<hr />&#39;;
var_dump($a);
echo &#39;<hr />&#39;;
var_dump($b);
echo &#39;<hr />&#39;;
var_dump($c);
echo &#39;<hr />&#39;;
var_dump($d);
?>

Le résultat est

Comment utiliser la fonction pour détruire des variables en php

Sans plus tard, jetons un œil à cette fonction. La fonction

unset() est utilisée pour détruire la variable donnée.

Donc, unset() ne détruit pas réellement la valeur mémoire dans la variable, il coupe simplement la relation entre la variable et la mémoire et supprime le nom de la variable, mais la mémoire ne sera pas libérée tant qu'elle est toujours référencée ; et En PHP, les objets sont passés par valeur par référence par défaut, ce qui explique aussi pourquoi Human类中,$a被unset()了,但是$b =$c = $d a aussi une valeur.

Jetons un œil à la syntaxe de cette fonction.

void unset (要销毁的变量)

Si unset() est une variable globale dans une fonction, seule la variable locale est détruite et les variables de l'environnement appelant garderont la même valeur qu'avant d'appeler unset().

Si unset() est une variable passée par référence dans une fonction, seule la variable locale est détruite et les variables de l'environnement appelant conserveront la même valeur qu'avant d'appeler unset().

Si unset() est une variable statique dans une fonction, la variable statique sera détruite dans la fonction. Cependant, lorsque cette fonction est à nouveau appelée, la variable statique sera restaurée à la valeur qu'elle avait avant sa dernière destruction.

C'est tout. Si vous voulez savoir autre chose, vous pouvez cliquer ici. → →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