Connecting Tech Pros Worldwide Forums | Help | Site Map

variable scope problem

ray
Guest
 
Posts: n/a
#1: Oct 8 '08
Hi, all,
foreach($array as $k =$v) {
$foo = ...;
}
echo $foo;

Is it allowed to access the $foo variable that is created within the
loop from outside of the loop? I think it isn't allowed, because
according to the rule stated in PHP manual(http://www.php.net/manual/
en/language.variables.scope.php): The scope of a variable is the
context within which it is defined, the $foo variable is defined
inside the loop, so its scope should limit within that loop. But the
test result of such script shows that I can access the $foo variable
from outside of the loop correctly. WHY? I'm a PHP newbie, Could
somebody help me out? Thanks in advance.

Curtis
Guest
 
Posts: n/a
#2: Oct 8 '08

re: variable scope problem


ray wrote:
Quote:
Hi, all,
foreach($array as $k =$v) {
$foo = ...;
}
echo $foo;
>
Is it allowed to access the $foo variable that is created within the
loop from outside of the loop? I think it isn't allowed, because
according to the rule stated in PHP manual(http://www.php.net/manual/
en/language.variables.scope.php): The scope of a variable is the
context within which it is defined, the $foo variable is defined
inside the loop, so its scope should limit within that loop. But the
test result of such script shows that I can access the $foo variable
from outside of the loop correctly. WHY? I'm a PHP newbie, Could
somebody help me out? Thanks in advance.
There is no lexical scoping in PHP. Did you read any further than the
first sentence of the page? From your example, it's not clear in which
context $foo was defined (global or local scope), although you can't
localize vars to just any block. Vars in a function or class
definition are limited to a local scope, unless you explicitly use the
"global" keyword or $GLOBALS array.

--
Curtis
ray
Guest
 
Posts: n/a
#3: Oct 9 '08

re: variable scope problem


On Oct 8, 4:05*pm, Curtis <dye...@gmail.comwrote:
Quote:
ray wrote:
Quote:
Hi, all,
foreach($array as $k =$v) {
* * *$foo = ...;
}
echo $foo;
>
Quote:
Is it allowed to access the $foo variable that is created within the
loop from outside of the loop? I think it isn't allowed, because
according to the rule stated in PHP manual(http://www.php.net/manual/
en/language.variables.scope.php): The scope of a variable is the
context within which it is defined, the $foo variable is defined
inside the loop, so its scope should limit within that loop. But the
test result of such script shows that I can access the $foo variable
from outside of the loop correctly. WHY? I'm a PHP newbie, Could
somebody help me out? Thanks in advance.
>
There is no lexical scoping in PHP. Did you read any further than the
first sentence of the page? From your example, it's not clear in which
context $foo was defined (global or local scope), although you can't
localize vars to just any block. Vars in a function or class
definition are limited to a local scope, unless you explicitly use the
"global" keyword or $GLOBALS array.
>
--
Curtis
Thanks for your reply.
What means lexical scoping? Do you mean that only a function can
establish a local scope?
I did read the whole page of the manual page and it does not
explicitly clarify this issue.
Closed Thread