Maison > développement back-end > Problème PHP > Quelles sont les 2 façons de détruire des variables en php

Quelles sont les 2 façons de détruire des variables en php

青灯夜游
Libérer: 2023-03-12 22:02:01
original
3092 Les gens l'ont consulté

Deux façons de détruire des variables en PHP : 1. Utilisez la fonction unset(), avec la syntaxe "unset($varname)" 2. Attribuez la valeur à la variable spécifiée comme "NULL", avec la syntaxe "$varname) ; = nul ;".

Quelles sont les 2 façons de détruire des variables en php

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3

La destruction de variables ou d'objets en 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 désactiver ou lui attribuer NULL

2 Destruction implicite, PHP est un langage de script, lorsque la dernière ligne de code est exécutée, tout est demandé ; la mémoire sera détruite. Release.

Par conséquent, deux façons de détruire les variables :

  • unset()unset()

  • $varname=null

举例来说:

class Human { 
  public $name = '张三'; 
  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);
Copier après la connexion

结果如下:

Notice: Undefined variable: a in /Library/WebServer/Documents/test.php on line 42
NULL
object(Human)#1 (2) { ["name"]=> string(6) "张三" ["gender"]=> NULL }
object(Human)#1 (2) { ["name"]=> string(6) "张三" ["gender"]=> NULL }
NULL 死了!
Copier après la connexion

首先我们要知道,在PHP中,变量名是存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 因此我们可以得出结论:

<?php
$a = 1;
$b = &$a;
unset($a);
var_dump($a); 
var_dump($b);
Copier après la connexion

结果是:

Notice: Undefined variable: a in E:\amp\apache\htdocs\index.php on line 5
NULL int(1)
Copier après la connexion

所以unset()并没有真正销毁变量中内存值,仅仅是切断了变量与内存之间的关系,并将变量名也给干掉了,但内存只要还被引用着就不会被释放; 而在PHP中对象的传值默认是引用传值,这也解释了Human类中,$a被unset()了,但是$b =$c = $d 一样有值。

$varname=null,变量名依然存在,但是内存值却被干掉了。那么在引用传值的情况下又是如何呢?举例:

<?php        
$a = 1;        
$b = &$a;        
$a=null;        
var_dump($a);        
var_dump($b);
Copier après la connexion

输出的结果是:

NULL NULL
Copier après la connexion

所以,$varname=null

$varname=null li>

Par exemple : 🎜🎜rrreee🎜Le résultat est le suivant : 🎜rrreee🎜Tout d'abord, il faut savoir qu'en PHP, le nom de la variable est stocké dans la pile mémoire, ce qui pointe vers l'adresse de la mémoire spécifique dans le tas. Trouvez la mémoire dans le tas via le nom de la variable ; nous pouvons donc conclure : 🎜rrreee🎜Le résultat est : 🎜🎜rrreee🎜Donc unset() ne détruit pas vraiment la valeur de la mémoire. dans la variable, cela coupe juste la relation entre la variable et la mémoire, et le nom de la variable est également supprimé, mais la mémoire ne sera pas libérée tant qu'elle est toujours référencée en PHP, la valeur d'un objet est passée ; par référence par défaut, ce qui explique également que dans la classe Human, $a est unset(), mais $b =$c = $d a toujours une valeur. 🎜🎜$varname=null, le nom de la variable existe toujours, mais la valeur mémoire est supprimée. Alors qu’en est-il dans le cas du passage par référence ? Par exemple : 🎜rrreee🎜Le résultat de sortie est : 🎜rrreee🎜Donc, $varname=null, bien que le nom de la variable et le pointeur mémoire existent toujours, la valeur dans la mémoire est complètement supprimée. 🎜🎜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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal