Heim >Backend-Entwicklung >PHP-Problem >Welche zwei Möglichkeiten gibt es, Variablen in PHP zu zerstören?
Zwei Möglichkeiten, Variablen in PHP zu zerstören: 1. Verwenden Sie die Funktion unset() mit der Syntax „unset($varname)“ 2. Weisen Sie der angegebenen Variablen den Wert „NULL“ mit der Syntax „$varname“ zu =null;".
Die Betriebsumgebung dieses Tutorials: Windows 7-System, PHP-Version 7.1, DELL G3-Computer
Die Zerstörung von Variablen oder Objekten in PHP kann in explizite Zerstörung und implizite Zerstörung unterteilt werden:
1 . Explizite Zerstörung: Wenn das Objekt nicht referenziert wird, wird es zerstört, sodass wir es aufheben oder NULL zuweisen können.
2 Implizite Zerstörung: PHP ist eine Skriptsprache, die alle angewendet wird Der Speicher wird zerstört. Release.
Daher gibt es zwei Möglichkeiten, Variablen zu zerstören:
unset()
unset()
$varname=null
举例来说:
class Human { public $name = '张三'; public $gender = null; public function __destruct() { echo '死了!<br />'; } } $a = new Human(); $b = $c = $d = $a; unset($a); $d=null; echo '<hr />'; var_dump($a); echo '<hr />'; var_dump($b); echo '<hr />'; var_dump($c); echo '<hr />'; var_dump($d);
结果如下:
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 死了!
首先我们要知道,在PHP中,变量名是存储在内存栈中,它是指向堆中具体内存的地址,通过变量名查找堆中的内存; 因此我们可以得出结论:
<?php $a = 1; $b = &$a; unset($a); var_dump($a); var_dump($b);
结果是:
Notice: Undefined variable: a in E:\amp\apache\htdocs\index.php on line 5 NULL int(1)
所以unset()并没有真正销毁变量中内存值,仅仅是切断了变量与内存之间的关系,并将变量名也给干掉了,但内存只要还被引用着就不会被释放; 而在PHP中对象的传值默认是引用传值,这也解释了Human类中,$a被unset()了,但是$b =$c = $d 一样有值。
$varname=null
,变量名依然存在,但是内存值却被干掉了。那么在引用传值的情况下又是如何呢?举例:
<?php $a = 1; $b = &$a; $a=null; var_dump($a); var_dump($b);
输出的结果是:
NULL NULL
所以,$varname=null
$varname=null
li>
$varname=null
, der Variablenname existiert noch, aber der Speicherwert wird gelöscht. Was ist also mit der Pass-by-Reference? Beispiel: 🎜rrreee🎜Das Ausgabeergebnis lautet: 🎜rrreee🎜Also $varname=null
, obwohl der Variablenname und der Speicherzeiger noch vorhanden sind, wird der Wert im Speicher vollständig gelöscht. 🎜🎜Empfohlenes Lernen: „🎜PHP-Video-Tutorial🎜“🎜Das obige ist der detaillierte Inhalt vonWelche zwei Möglichkeiten gibt es, Variablen in PHP zu zerstören?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!