前回の記事ではオブジェクトや配列を逆シリアル化する方法について学習しましたので、必要な方は「PHPで配列やオブジェクトを逆シリアル化する方法」を読んでください。今回は関数を使って変数を破棄する方法を紹介しますので、必要な場合は参考にしてください。
記事を始める前に、まず変数の破棄とは何かを見てみましょう。
PHP 変数またはオブジェクトの破棄は、明示的な破棄と暗黙的な破棄に分けることができます:
1. 明示的な破棄では、オブジェクトが参照されていないときに破棄されます。設定を解除するか、NULL を割り当てることができます。
2. 暗黙的な破棄。PHP はスクリプト言語です。コードの最後の行が実行されると、適用されているすべてのメモリが解放される必要があります。
今日紹介するものは、明示的な破壊が設定されていません。
まず小さな栗を見てみましょう。
<?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); ?>
結果は次のとおりです
早速、この関数を見てみましょう。
unset() 関数は、指定された変数を破棄するために使用されます。
つまり、unset() は実際には変数内のメモリ値を破壊するのではなく、変数とメモリの間の関係を切断し、変数名を削除するだけですが、メモリがまだ参照されている限り、これはリリースされません; PHP では、オブジェクトの値はデフォルトで参照によって渡されます。これは、Human
クラスでは $a が unset()
であるが、 $ b =$c = $d
にも値があります。
この関数の構文を見てみましょう。
void unset (要销毁的变量)
unset() が関数内のグローバル変数である場合、ローカル変数のみが破棄され、呼び出し環境内の変数は unset() を呼び出す前と同じ値を保持します。
unset() が関数内で参照によって渡される変数の場合、ローカル変数のみが破棄され、呼び出し環境内の変数は unset() を呼び出す前と同じ値を保持します。
unset() が関数内の静的変数である場合、静的変数は関数内で破棄されます。ただし、この関数が再度呼び出されると、静的変数は最後に破棄される前の値に復元されます。
以上です。他に知りたいことがある場合は、ここをクリックしてください。 → →phpビデオチュートリアル
以上がPHPで関数を使用して変数を破棄する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。