On 7/22/09 6:09 PM, "Shawn McKenzie" <nospam@xxxxxxxxxxxxx> wrote: > Tom Worster wrote: >> though the manual is perfectly clear that this should be expected, i was a >> bit surprised that the result of the following is 42 >> >> <?php >> function foo(&$a) { >> $a = 42; >> unset($a); >> $a = 'meaning'; >> } >> foo($a); >> print("$a\n"); >> ?> >> >> normally i would expect unset() to free some memory. but in this example it >> doesn't and has a different behavior: it releases foo's reference to the >> global $a, allowing the next line to define a local $a. >> >> i think i'd have preferred compile error. >> >> > > Well, you unset the reference and then you assigned 'meaning' to a local > function variable $a. Why would you get a compile error? when you state it in those terms (which are clearly correct) i wouldn't. but if the way i think is "unset() destroys the specified variables" (as the manual puts it) then i expect that the specified variable would be destroyed, not the reference. so, as i said, i was a bit surprised when the variable wasn't destroyed. once i understood what was happening, i thought it a bit confusing to have such scope-dependent differences in behavior of a language element. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php