について質問がありますunset
- すべての変数の設定を解除する方法。使用する
unset($var1,$var2,$var3,...)
必要がありますか、それとも他の簡単な方法がありますか? - 関数の最後で変数の設定を解除するのは良い習慣ですか?違いはありません!
- 変数の設定を解除すると、
reduce
プログラミングされますexecution time
か?
ありがとう
あなたunset($var1,$var2,$var3,...)
にとって十分に簡単ではないということですか?
ローカル変数は関数のスコープの最後で常に消えるので、明示的にそうする意味はありません。これは参照変数にも当てはまり、関数にローカルな参照のみが表示されなくなりますが、それらが参照するものはすべて、関数のスコープ外にある場合でも存在します。
わからない。
すべての変数の設定を解除する方法。unset($ var1、$ var2、$ var3、...)を使用する必要がありますか、それとも他の簡単な方法がありますか?
はい、これは複数の変数の設定を解除する通常の方法です。スコープ内の変数を繰り返して設定を解除することもできますが、それはやり過ぎです。
関数の最後で変数の設定を解除するのは良い習慣ですか?違いはありません!
変数はスコープの最後(関数、クラス、スクリプト)でガベージコレクションされますが、単一ファイルのスクリプト(手続き型)でこれを行うと便利な場合があります。特に、他のスクリプトがスコープに任意に含まれているスクリプトではそうです。
そうは言っても、クリーンな組織では、これは不要です。ただし、必ずしも悪いことでもありません。
変数の設定を解除すると、プログラミングの実行時間が短縮されますか?
ほとんどの場合、違いはほとんどありません。ただし、前述したように、それは害を及ぼすことはなく、範囲内/範囲外の内容を明確にする可能性があります。実際、for / foreachにはブロックスコープがないため、私は通常、for / foreachの直後にこれを行います。したがって、これらのブロック内で定義された変数は、ループの後で使用できます。
例:
foreach ($doctors as $key => $val) {
// do something
}
unset($key, $val);
ところで、これを実際にまとめて行う方法を知りたい場合(はい、可能ですが、きれいではありません):
<?php
$_SCRIPT_one = 1;
$_SCRIPT_two = 2;
$_SCRIPT_three = 3;
// list of all variables defined
$all = array_keys(get_defined_vars());
// list only the local variables we are interested in
$local = array_filter($all, function($name) { return preg_match('/^_SCRIPT_/i', $name); });
// dump currently scoped local variables
var_dump($local);
// unset local variables
foreach ($local as $var) { unset($$var); }
// list of all variables defined
$all = array_keys(get_defined_vars());
// list only the local variables we are interested in
$local = array_filter($all, function($name) { return preg_match('/^_SCRIPT_/i', $name); });
// dump currently scoped local variables
var_dump($local);
まず、unset
は言語構造であり、関数ではありません。
すべての変数の設定を解除する方法。unset($ var1、$ var2、$ var3、...)を使用する必要がありますか、それとも他の簡単な方法がありますか?
すべてのグローバル変数の設定を解除することはできますが、なぜそのようなことをするのかわかりません。
foreach (array_keys($GLOBALS) as $var) {
if ($var != 'GLOBALS') unset($GLOBALS[$var]);
}
関数の最後で変数の設定を解除するのは良い習慣ですか?違いはありません!
いいえ、変数がスコープ外になると、変数は自動的に設定解除されます。手動で行う意味はありません。
変数の設定を解除すると、プログラミングの実行時間が短縮されますか?
実際には、メモリ使用量を減らす可能性があります。