2012-12-28 44 views
0

考慮下列情形..函數結束時是否清除本地函數變量的內存?

$var = 'Lots of information'; 

function go($var) { 

    // Do stuff 

} 

現在,當PHP退出功能,不明確的函數內的自動所有局部變量的內存或者我應該做:

unset($var); 

。 ..在任何存儲大量數據的局部變量上的函數?

回答

2

它將在函數範圍內自行清除。這意味着該函數的$var參數在函數調用後將不再存在。 請注意,$var = 'Lots of information';位於功能塊之外,因此不會自動清除。在這種情況下,全局範圍內的$var和功能範圍內的$var是兩個不同的東西,而功能塊裏面只有$var的函數範圍將存在。

+0

是的......我知道他們是不同的,這就是爲什麼我想確保本地函數被清除,因爲它在函數結束後變得無用。想要保持正常的。 – Brett

+0

@Brett,它會的。 – Shoe

0

這個問題涉及變量範圍的概念。在函數內部,變量是「包含」的,除非聲明爲全局變量,否則與函數外的同名變量無關。所以如果你在一個函數內部創建了一個大的變量,並且你想取消它的設置,你需要在函數內部取消設置()。這個頁面很重要,尤其是關於「全局」和「靜態」變量的部分。 PHP還有一種方法可以通過在變量名稱前使用&符號來引用變量。在這種情況下,函數在變量本身上運行,而不是函數的變量副本。 http://php.net/manual/en/language.variables.scope.php

相關問題