unset関数はPHPに付属している変数を破棄する関数です。 unsetを使って静的変数やグローバル変数を破棄する方法を紹介しましたが、同時に配列変数を破棄する方法も紹介しました。 。
例 1. unset() の例
コードは次のとおりです |
コードをコピー |
// 単一の変数を破棄します
設定を解除 ($foo);
//単一の配列要素を破棄します
設定を解除します ($bar['quux']);
// 複数の変数を破棄します
設定を解除します ($foo1, $foo2, $foo3);
?>
|
関数内の
unset() の動作は、破棄する変数のタイプによって異なります。
関数内でグローバル変数を unset() すると、ローカル変数のみが破棄され、呼び出し環境内の変数は unset() を呼び出す前と同じ値を保持します。
コードは次のとおりです |
コードをコピー |
関数 destroy_foo() {
グローバル $foo;
unset($foo);
}
$foo = 'バー';
destroy_foo();
エコー $foo;
?>
|
上記の例は次のように出力します:
バー
関数内で参照によって渡された変数を unset() する場合、ローカル変数のみが破棄され、呼び出し環境内の変数は unset() を呼び出す前と同じ値を保持します。
コードは次のとおりです |
コードをコピー |
関数 foo(&$bar) {
unset($bar);
$bar = “まあ”;
}
$bar = '何か';
エコー「$barn」;
foo($bar);
エコー「$barn」;
?>
上記の例では次のように出力されます:
何か
何か
|
unset() 静的変数
厳密に言えば、unset() を使用して静的変数を破棄しても、変数名と変数値の間の参照が壊れるだけです。
例:
コードは次のとおりです |
コードをコピー |
関数 foo() {
静的 $b;
$a++;
$b++;
エコー "$a---$bn";
unset($a,$b);
var_dump($a);
var_dump($b);
エコー "######################n";
}
ふー();
foo();
foo();
?>
この例を実行すると、次のように出力されます:
1---1
ヌル
ヌル
##########################################
1---2
ヌル
ヌル
##########################################
1---3
ヌル
ヌル
##########################################
unset() グローバル変数
unset() 静的変数と同様、関数内でグローバル変数を unset() すると、ローカル変数のみが破棄され、呼び出し環境内の変数は unset() を呼び出す前と同じ値を維持します。
次の 2 つの例を比較してみてください:
コードは次のとおりです |
コードをコピー |
関数 destroy_foo() {
グローバル $foo;
unset($foo);
}
$foo = 'バー';
destroy_foo();
エコー $foo;
?>
関数 destroy_foo() {
グローバル $foo;
unset($GLOBALS['foo']);
}
$foo = 'バー';
destroy_foo();
エコー $foo;
?>
|
最初の例を実行すると、 bar が出力されますが、2 番目の例では何も出力されません。
|
http://www.bkjia.com/PHPjc/628977.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/628977.html技術記事 unset関数はPHPに付属している変数を破棄する関数です。unsetを使って静的変数やグローバル変数を破棄する方法も紹介しました。以下で見てみましょう。