1
變量範圍(如定義here)PHP中的變量作爲參考回報?
變量的範圍即它被定義的上下文。大多數情況下,所有PHP變量只有一個範圍。這個單一的範圍跨越了包含和必需的文件。
//a.php
<?php
class a {
function &func() {
$avar = array("one", "two", "three");
return $avar;
}
?>
__
//b.php
<?php
class b {
include("a.php");
$ainstance = new a;
var_dump($ainstance->func());
}
?>
上面的代碼將轉儲關於可變信息作爲預期(我的意思WRT結構爲形成在功能func
)。
我的疑問是,
- 哪裏時,它是在一個函數範圍的變量存儲在哪裏?
- 如果它在調用堆棧上,那麼在函數終止時不會清理/銷燬該變量?
- 由於變量沒有被破壞(按照上面的代碼),爲什麼它沒有被破壞,或者PHP有一種機制來保存變量(比如在堆中)並返回引用。
- PHP有調用堆棧嗎?
雖然我還沒有明白。將通過[zval](http://php.net/manual/en/features.gc.refcounting-basics.php)。 +1指向zval。 – ThinkingMonkey 2011-12-22 17:58:55
你需要知道的是,當返回變量時,PHP會自動返回變量的*副本*,而不像每個例子中的C,您必須自己複製一份副本(例如:返回C字符串時)。 – netcoder 2011-12-22 23:35:38
雅我明白了。再次感謝您指出zval。 – ThinkingMonkey 2011-12-23 05:49:17