PHP에서 변수를 삭제하는 두 가지 방법: 1. "unset($varname)" 구문으로 unset() 함수를 사용합니다. 2. "$varname 구문으로 지정된 변수에 값을 "NULL"로 할당합니다. =널;".
이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
PHP에서 변수나 객체의 소멸은 명시적 소멸과 암시적 소멸로 나눌 수 있습니다:
1 . 명시적 소멸, 객체가 참조되지 않으면 소멸되므로 설정을 해제하거나 NULL을 할당할 수 있습니다.
2 암시적 소멸, PHP는 코드의 마지막 줄이 실행될 때 모든 요청한 메모리가 삭제됩니다.
따라서 변수를 삭제하는 두 가지 방법:
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
, 변수 이름은 여전히 존재하지만 메모리 값은 삭제됩니다. 그렇다면 참조별 전달의 경우는 어떨까요? 예: 🎜rrreee🎜출력 결과는 다음과 같습니다. 🎜rrreee🎜그래서 $varname=null
, 변수 이름과 메모리 포인터는 여전히 존재하지만 메모리의 값은 완전히 삭제됩니다. 🎜🎜추천 학습: "🎜PHP 비디오 튜토리얼🎜"🎜위 내용은 PHP에서 변수를 파괴하는 2가지 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!