我有大約unset
問題關於PHP未設置功能
- 問題如何來取消所有variables.should我使用
unset($var1,$var2,$var3,...)
或任何其他簡單的方法存在? - 在函數的最後取消變量是很好的做法嗎?.any的區別!
- 取消變量是否會
reduce
編程execution time
還是不行?
感謝
我有大約unset
問題關於PHP未設置功能
unset($var1,$var2,$var3,...)
或任何其他簡單的方法存在?reduce
編程execution time
還是不行?感謝
你的意思是unset($var1,$var2,$var3,...)
是不是你很容易?
由於局部變量總是在函數範圍的末尾消失,所以沒有必要明確這麼做。這也適用於引用變量,只有函數的局部引用纔會消失,但無論它們引用了什麼,如果在函數範圍之外,它們仍然會在那裏。
不知道。
首先,unset
是一種語言結構,而不是函數。
如何取消設置所有變量。是否應該使用unset($ var1,$ var2,$ var3,...)或其他簡單的方法?
可以取消設置所有的全局變量,不過,我不明白你爲什麼會做這樣的事情:
foreach (array_keys($GLOBALS) as $var) {
if ($var != 'GLOBALS') unset($GLOBALS[$var]);
}
在函數的結束unseting變量是好的做法呢?有什麼區別!
不,變量超出範圍時會自動取消設置。手動操作毫無意義。
撤銷變量是否會減少編程執行時間?
不是,它可能雖然減少內存使用量。
如何取消設置所有的變量。我應該使用unset($ var1,$ var2,$ var3,...)或其他簡單的方法嗎?
是的,這是取消設置多個變量的正常方法。您可以遍歷範圍內的變量並取消設置,但這會過度。
在函數的末尾釋放變量是很好的做法嗎?.any區別!
雖然變量將在作用域(函數,類,腳本)末尾進行垃圾回收,但在單文件腳本(過程)中執行此操作可能很有用 - 特別是在其他腳本任意包含在範圍內。
這就是說,乾淨的組織,這是不必要的;然而,也不一定是壞事。
撤銷變量是否會減少編程執行時間?
在大多數情況下,幾乎沒有差別;然而,正如我前面提到的那樣,它不會受到傷害,並且可能有助於澄清什麼是/不在範圍內。實際上,我通常在for/foreach之後執行此操作,因爲/ 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或者通過使用它來獲得任何東西。也許你應該發佈你認爲會從中受益的代碼。 – 2011-06-04 04:50:29