variable scope problem

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • ray

    variable scope problem

    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.variab les.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

    #2
    Re: variable scope problem

    ray wrote:
    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.variab les.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

    Comment

    • ray

      #3
      Re: variable scope problem

      On Oct 8, 4:05 pm, Curtis <dye...@gmail.c omwrote:
      ray wrote:
      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.variab les.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.

      Comment

      Working...