phpチュートリアル変数の破棄とunsetの使用法
unset -- 指定された変数を解放します
説明
void unset (混合変数 [, 混合変数 [, ...]])
unset() は、指定された変数を破棄します。 PHP 3 では、unset() は TRUE (実際には整数値 1) を返すことに注意してください。一方、PHP 4 では、unset() は実際の関数ではなくなり、ステートメントになりました。戻り値がないため、unset() の戻り値を取得しようとすると解析エラーが発生します。
参考PHPマニュアル:
/* これがメモリマップだと想像してください
____________________________________________
|ポインタ|値 |変数 |
-----------------------------------
| 1 | NULL | --- |
| 2 | NULL | --- |
| 3 | NULL | --- |
| 4 | NULL | --- |
| 5 | NULL | --- |
------------------------------------
いくつかの変数を作成します */
$a=10;
$b=20;
$c=array ('one'=>array (1, 2, 3));
/* メモリを見てください
_____________________________
|ポインタ|値 | 変数 |
-----------------------------------
| 1 | 10 | $a |
| 2 | 20 | $b |
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 | $c['one'][2] |
------------------------------------
してください */
$a=&$c['one'][2];
/* メモリを見てください
_____________________________
|ポインタ|値 | 変数 |
-----------------------------------
| 1 | NULL | --- | // $a の値は破棄され、ポインタは解放されます
| 2 | 20 | $b |
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 | $c['one'][2] ,$a | // $a がここに来ました
------------------------------------
してください */
$b=&$a; // または $b=&$c['one'][2];結果は、「$c['one'][2]」と「$a」が同じポインターにある場合と同じになります。
/* メモリを見てください
________________________________
|ポインタ|値 | 変数 |
--------------------------------------
| 1 | NULL | --- |
| 2 | NULL | --- | // $b の値は破棄され、ポインタは解放されます
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 |$c['one'][2] ,$a , $b | // $b がここに来ました
--------------------------------------
次に行うこと */
unset($c['one'][2]);
/* メモリを見てください
________________________________
|ポインタ|値 | 変数 |
--------------------------------------
| 1 | NULL | --- |
| 2 | NULL | --- |
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 | $a 、 $b | // $c['one'][2] はメモリでも配列でも破棄されます
--------------------------------------
次に行うこと */
$c['one'][2]=500; //今は配列になっています
/* メモリを見てください
________________________________
|ポインタ|値 | 変数 |
--------------------------------------
| 1 | 500 | $c['one'][2] | // メモリ内の任意の (次の) 空きポインタに配置されるように作成されました
| 2 | NULL | --- |
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 | $a 、 $b | //このポインタは使用中です
--------------------------------------
トレイが古いポインタで $c['one'][2] を返し、参照 $a,$b を削除します。 */
$c['one'][2]=&$a;
unset($a);
設定を解除($b);
/* メモリを見てください
________________________________
|ポインタ|値 | 変数 |
--------------------------------------
| 1 | NULL | --- |
| 2 | NULL | --- |
| 3 | 1 | $c['one'][0] |
| 4 | 2 | $c['one'][1] |
| 5 | 3 | $c['one'][2] | //$c['one'][2] が返され、$a,$b は破棄されます
-------------------------------------- ?>
これが教程のお役に立てば幸いです。
このように便能够说明php の unset はどのように実行されますか
最初に強調しておきたいのは、unset は PHP では関数ではないということです。関数ではないため、戻り値がなく、使用時に unset の戻り値を判断に使用することはできません。
第二に、関数内で unset はローカル変数のみを破棄できますが、グローバル変数は破棄できません。マニュアルの例を見てみましょう。
関数 destroy_foo() {
グローバル $foo;
unset($foo);
}
destroy_foo();
エコー $foo;
?>
です
バーhttp://www.bkjia.com/phper/php/37201.htm