I came across some weird behavior in 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?!
Anybody know why this is happening?
Print out what it’s deleting and enable warnings to see what’s actually happening! =)
$GLOBALS
contains GLOBALS
. You unset
it, which removes the actual global variable. If this were just pass-by-reference behaviour, you would get an empty array, not NULL
.