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).

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?


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
Mac Consulting/Sales

phn                 561.589.6449
mobile email        [EMAIL PROTECTED]

PHP General Mailing List (
To unsubscribe, visit:

Reply via email to