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