PHP 4.0 Bug #7983: Odd behviour of $GLOBALS
| From: | arunas at anm dot org | Date: | Mon, 27 Nov 2000 02:12:46 +0000 |
| Subject: | PHP 4.0 Bug #7983: Odd behviour of $GLOBALS | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-39172@lists.php.net to get a copy of this message | ||
From: arunas@anm.org
Operating system: Redhat LInux 7.0
PHP version: 4.0.3pl1
PHP Bug Type: Unknown/Other Function
Bug description: Odd behviour of $GLOBALS
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.
--
Edit Bug report at: http://bugs.php.net/?id=7983&edit=1