我在PHP中遇到了一些奇怪的行为:
function f($var) { // not using references
foreach ($var as $k => $v) {
unset($var[$k]); // shouldn't this unset from a copy?!
}
}
print '<pre>';
var_dump($GLOBALS); // array
f($GLOBALS);
var_dump($GLOBALS); // null?!
有人知道为什么会这样吗?
答案 0 :(得分:3)
打印出删除内容并启用警告以查看what’s actually happening! =)
$GLOBALS
包含GLOBALS
。你unset
它,它删除了实际的全局变量。如果这是只是传递引用行为,那么你将获得一个空数组,而不是NULL
。
答案 1 :(得分:1)
这是因为expected behavior:
这是一个超全球&#39;或自动全局变量。这很简单 表示它在整个脚本的所有范围内都可用。有 不需要做全局$变量;在函数或函数内访问它 方法