Whoops, you're right. Classic 'C' mistake using = instead of ==. Never mind :(
> On Mon, 2002-03-11 at 18:51, Randall Perry wrote: >> According to the PHP 4 docs all variables are global unless within a >> function. I've got the following test code which should output 2, but >> outputs 1. The while loop creates it's own class object (which seems strange >> since it isn't explicitly instantiated by my code; I would think it would >> cause errors). > > Actually, on PHP 4.2.0-dev, I get a parse error on the 'global $o-test;' > line (you can't globalize an object attribute). > > If I remove that line, the code does indeed produce '$o-test = 1;'. > That's because the loop never executes. Consider this change: > > while ($y = 0) { > echo "In the loop.\n"; > $o->test = 2; > $y = 1; > } > > When executed, 'In the loop' is never printed. This is because the loop > never executes--because the while() condition is wrong. The '=' should > be a '==' or '==='. What's happening at the moment is that the while() > condition '$y = 0' is assigning 0 to $y, not comparing 0 to $y. The > overall value of that expression, then, is 0--which evaluates to false. > So the while loop never runs. If I change the '=' to '==', I get the > correct output: > > Notice: Undefined variable: y in > /home/torben/public_html/phptest/__phplist.html on line 27 > > In the loop. > $o->test = 2 > > The notice is easily corrected by initializing $y before testing its > value. The following should work for you: > > <?php > error_reporting(E_ALL); > > class Ccust_data { > function Cform_data() { > $this->test = ""; > } > } > > $o = new Ccust_data(); > $o->test = 1; > > $y = 0; > while ($y == 0) { > echo "In the loop.\n"; > $o->test = 2; > $y = 1; > } > > echo "\$o->test = $o->test\n"; > > ?> > > > What does this code do for you? > > Torben > >> The reason I created an object for my variable (actually, I started testing >> with regular strings) is that I've had similar scoping problems in perl, >> where variables got out of scope within loops (or even if statements). In >> perl, declaring an object outside these structures will protect it's scope. >> Not so in PHP I see. >> >> Can anyone explain this behavior? Do I have to create functions that return >> values every time I need a loop that modifies a variable? >> >> <?php >> >> class Ccust_data { >> function Cform_data() { >> $this->test = ""; >> } >> } >> >> $o = new Ccust_data(); >> $o->test = 1; >> >> while ($y = 0) { >> global $o->test; >> $o->test = 2; >> $y = 1; >> >> } >> >> echo "\$o->test = $o->test\n"; >> >> ?> >> -- >> Randy Perry >> sysTame >> Mac Consulting/Sales >> -- Randy Perry sysTame Mac Consulting/Sales phn 561.589.6449 mobile email [EMAIL PROTECTED] -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php