#11466 [Com]: it works ambiguously to unset the global variable in function

From: Date: Tue, 20 Jul 2004 15:06:46 +0000
Subject: #11466 [Com]: it works ambiguously to unset the global variable in function
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-63117@lists.php.net to get a copy of this message
ID: 11466 Comment by: preference-password163 at hotmail dot com Reported By: vanity at neowiz dot com Status: Bogus Bug Type: Variables related Operating System: FreeBSD 3.5.1 PHP Version: 4.0.4pl1 New Comment: <a href=http://rerotic-feetanalsex.da.ru>preference password</a> Previous Comments: ------------------------------------------------------------------------ [2001-06-13 15:06:09] vanity at neowiz dot com oops, sorry. unset($var); // unset doesn't works unset($arr["something"]); // unset works ------------------------------------------------------------------------ [2001-06-13 15:00:39] vanity at neowiz dot com I think that it's a bug even if this is how it works. :( 'Cause unset can does or doesn't work like this. function unset_test () { global $var; global $arr; unset($var); // unset works unset($arr["something"]); // unset doesn't works } ------------------------------------------------------------------------ [2001-06-13 13:32:23] sniper@php.net Yes, this is how it works, not a bug. ------------------------------------------------------------------------ [2001-06-13 11:14:10] vanity at neowiz dot com 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 this bug report at http://bugs.php.net/?id=11466&edit=1

« previous php.bugs (#63117) next »