|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2000-11-27 17:53 UTC] joey@php.net
[2000-12-19 06:14 UTC] stas@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Oct 22 08:00:01 2025 UTC |
I don't always know how variable arrives in a script. To be general, I have a function ClearVar($Name) that accepts the name of a variable, and goes through all of the global arrays to clear it. This appears to work properly with HTTP_GET_VARS and HTTP_POST_VARS, but the GLOBALS array is a funny fish. In fact, playing around to try to figure it out, I tried: $Piano = "Hemmingway"; print "Before: Piano = $Piano<br>\n"; unset($GLOBALS["Piano"]); print "After: Piano = $Piano<br>\n"; Which outputs: Before: Piano = Hemmingway After: Piano = ??0???? or some variant of that. More surprisingly, if I use unset on an element of the GLOBALS array within a function even odder things happen. The following code: $Piano = "Hemmingway"; print "Before: Piano = $Piano<br>\n"; ClearTest(); print "After: Piano = $Piano<br>\n"; $Piano = "Brahmbach"; print "Before: Piano = $Piano<br>\n"; ClearTest(); print "After: Piano = $Piano<br>\n"; function ClearTest() { global $Piano; print "Before[ClearTest]: Piano = $Piano<br>\n"; MyClearVar("Piano"); print "After[ClearTest]: Piano = $Piano<br>\n"; } function MyClearVar($Name) { unset($GLOBALS[$Name]); } Produces the following: Before: Piano = Hemmingway Before[ClearTest]: Piano = Hemmingway After[ClearTest]: Piano = Hemmingway After: Piano = |6( Before: Piano = Brahmbach Before[ClearTest]: Piano = After[ClearTest]: Piano = After: Piano = Brahmbach So apparently not all is simple with $GLOBALS. There maybe something I'm missing, I may be abusing a convenience method, but boy are the results strange.