PHP が変数を破棄する 2 つの方法: 1. unset() 関数、構文 "unset($varname)" を使用します; 2. 指定された変数に値を "NULL" として割り当てます、構文 " $varname=null;" 。
このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター
PHP 変数または、オブジェクトの破棄は、明示的な破棄と暗黙的な破棄に分けることができます:
1. 明示的な破棄. オブジェクトが参照されていない場合、オブジェクトは破棄されるため、設定を解除するか、NULL を割り当てることができます。 ;
2. 暗黙的な破棄。PHP はスクリプト言語です。コードの最後の行が実行されると、適用されたすべてのメモリが解放される必要があります。
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
、変数名とメモリ ポインタはまだ存在しますが、メモリ内の値は次のようになります。完全に削除されました。 推奨学習: 「
PHP ビデオ チュートリアル
以上がPHPで変数を破棄する2つの方法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。