Bug #11466: it works ambiguously to unset the global variable in function

From: Date: Wed, 13 Jun 2001 15:14:10 +0000
Subject: Bug #11466: it works ambiguously to unset the global variable in function
Groups: php.dev 
Request: Send a blank email to php-dev+get-56791@lists.php.net to get a copy of this message
From: vanity@neowiz.com Operating system: FreeBSD 3.5.1 PHP version: 4.0.4pl1 PHP Bug Type: Variables related Bug description: it works ambiguously to unset the global variable in function These two sources are the same except the last line of the second one. The former represents that it doesn't work to unset the global variable, the latter that it only works when unset throught the $GLOBALS variable. [SRC 1: unset doesn't work] ============================================================ <?php function unset_variable ($name, $flag) { global $$name; global $GLOBALS; if ($flag & 1) { echo " - <font color=magenta>unset \$$name</font><br>\n"; unset($$name); } if ($flag & 2) { echo " - <font color=magenta>unset \$GLOBALS[\"$name\"]</font><br>\n"; unset($GLOBALS[$name]); } } function disp_variable ($name) { global $$name; global $GLOBALS; printf(" - \$%s : %s<BR>\n", $name, isset($$name) ? "<font color=green>".$$name."</font>" : "<font color=red>(unset)</font>"); printf(" - \$GLOBALS[%s] : %s<BR>\n", $name, isset($GLOBALS[$name]) ? "<font color=green>".$GLOBALS[$name]."</font>" : "<font color=red>(unset)</font>"); } for ($i=0; $i < 4; $i++) { $name = "var$i"; $$name = "VALUE_$i"; $step = $i; $flag = $i; printf("<font color=blue>STEP (%s)</font><BR>\n", $step); disp_variable ($name); unset_variable ($name, $flag); disp_variable ($name); printf("<BR>\n"); } ?> ============================================================ [SRC 2: unset works only throught the $GLOBALS variable] ============================================================ <?php function unset_variable ($name, $flag) { global $$name; global $GLOBALS; if ($flag & 1) { echo " - <font color=magenta>unset \$$name</font><br>\n"; unset($$name); } if ($flag & 2) { echo " - <font color=magenta>unset \$GLOBALS[\"$name\"]</font><br>\n"; unset($GLOBALS[$name]); } } function disp_variable ($name) { global $$name; global $GLOBALS; printf(" - \$%s : %s<BR>\n", $name, isset($$name) ? "<font color=green>".$$name."</font>" : "<font color=red>(unset)</font>"); printf(" - \$GLOBALS[%s] : %s<BR>\n", $name, isset($GLOBALS[$name]) ? "<font color=green>".$GLOBALS[$name]."</font>" : "<font color=red>(unset)</font>"); } for ($i=0; $i < 4; $i++) { $name = "var$i"; $$name = "VALUE_$i"; $step = $i; $flag = $i; printf("<font color=blue>STEP (%s)</font><BR>\n", $step); disp_variable ($name); unset_variable ($name, $flag); disp_variable ($name); printf("<BR>\n"); } $GLOBALS[anything]; ?> ============================================================ -- Edit Bug report at: http://bugs.php.net/?id=11466&edit=1

« previous php.dev (#56791) next »