My bad, I posted the wrong code. Try this instead to see the bug:
<?php function not_super()
{
var_dump(isset($GLOBALS['GLOBALS']));
return array_keys($GLOBALS);
}
//var_dump(not_super(), array_keys($GLOBALS));
not_super();
not_super();
?>
run this code, don't read it, you will see output of bool(false), bool(false)
However, the following code works as expected!
<?php function not_super() { return array_keys($GLOBALS); } var_dump(not_super(), array_keys($GLOBALS)); ?>
GLOBALS will be present in both arrays.
Very odd behavior.
Note that in PHP 5.0.0b1, the first function does work, so this is fixed somewhere in there.
Greg -- phpDocumentor http://www.phpdoc.org
Jim Lucas wrote:
umm... That is what is going to happen when you follow your example.
I think you are mistaken in what you are expecting...
This line: $a = array_keys($GLOBALS);
will give you an array of values that match the keys of the $GLOBALS array
it won't copy the arrays.
Try this.
<PRE> <?php $a = array_keys($GLOBALS); foreach($a AS $key => $value) { echo $key."=>(".$value.")\n"; } ?>
Jim Lucas
----- Original Message ----- From: "Greg Beaver" <[EMAIL PROTECTED]> To: "Jim Lucas" <[EMAIL PROTECTED]> Cc: "Leif K-Brooks" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Friday, August 01, 2003 1:42 PM Subject: Re: [PHP] Re: Globals
Hi Jim,
The code you posted is correct, I never contested that. Read carefully.
<?php function not_super() { var_dump(isset($GLOBALS['GLOBALS'])); $a = array_keys($GLOBALS);
var_dump(isset($a['GLOBALS'])); } not_super(); ?>
run this code, don't read it, you will see output of bool(false), bool(false)
However, the following code works as expected!
<?php function not_super() { return array_keys($GLOBALS); } var_dump(not_super(), array_keys($GLOBALS)); ?>
GLOBALS will be present in both arrays.
Very odd behavior.
Greg
Jim Lucas wrote:
actually, it does work and it does exist.
Try using print_r() or
print_r(array_keys($GLOBALS));
and you will see an entry for GLOBALS
mine is located at #13
Jim Lucas
----- Original Message ----- From: "Greg Beaver" <[EMAIL PROTECTED]> To: "Leif K-Brooks" <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Sent: Friday, August 01, 2003 12:45 PM Subject: Re: [PHP] Re: Globals
Try this code:
<?php function blah() { var_dump($GLOBALS['GLOBALS']);
}
blah(); ?>
It appears that in a function scope, it doesn't. This is definitely a bug, I'll post it if it hasn't already been noticed.
Greg
Leif K-Brooks wrote:
Greg Beaver wrote:
$GLOBALS does not contain a reference to itselfYes it does. I just ran the following, and I got "Greg is wrong."
<?php $foo = 'Greg is wrong.'; echo $GLOBALS['GLOBALS']['GLOBALS']['GLOBALS']['foo']; ?>
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php