到函数内的全局变量

时间:2013-03-13 08:18:27

标签: php function variables global

我对函数内的全局变量有问题

<?php
    function main(){
        $var = "My Variable";
        function sub() {
            GLOBAL $var;
            echo $var; // Will show "My Variable"
        }
        sub();
        echo $var; // Will show "My Variable" 
    }
    main();
    sub(); // Will not show and I will sub() cant use outside main() function
?>
  1. 我只想在子功能
  2. 中设置全局$var
  3. sub()无法在main()功能
  4. 之外使用

    我绑定使用GLOBAL,但它没有显示任何内容......任何?

2 个答案:

答案 0 :(得分:1)

您没有为全局范围变量$var分配值 只有main()为名为$var的变量分配值,但仅在main()的范围内。并且只有main()的{​​{1}}实际打印了该值。对echo $var;的两次调用都不会产生输出 尝试用

sub()

输出

<?php
function main(){
    $var = "My Variable"; 
    function sub() {
      GLOBAL $var;
      echo 'sub: ', $var, "\n";
    }
    sub();
    echo 'main: ', $var, "\n";
}
main();
sub();

请阅读https://en.wikipedia.org/wiki/Dependency_injection; - )

答案 1 :(得分:1)

不确定我是否理解你想要的东西,但你的$var不是全球性的。它是main()

中的局部变量

如果在函数或类之外声明变量,则变量只是全局变量。

<?php
    $var = "My Variable"; // made $var global
    function main(){
        //removed $var here
        function sub() {
            global $var;
            echo $var; // Will show "My Variable"
        }
        sub();
        echo $var; // Will throw notice:  Undefined variable: var
    }
    main();
    sub(); // Will show "My Variable"
?>

为什么要在方法中声明一个方法来从那里调用它?

也许这就是你想要的......

<?php
   //$var = "My Variable";
    function main(){
        $var = "My Variable";
        $sub = function($var) {
            echo "sub: ".$var; // Will show "sub: My Variable"
        };
        $sub($var);
        echo "main: ".$var; //  Will show "main: My Variable"
    }
    main();
    // sub(); // Will not work
    // $sub(); // Will not work
?>