【问题标题】:to Global Variables inside functions到函数内部的全局变量
【发布时间】:2013-03-13 08:18:27
【问题描述】:

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

<?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. 我只想在子函数中全局$var
  2. sub() 不能在 main() 函数之外工作

我绑定使用GLOBAL,但它什么也没显示...任何?

【问题讨论】:

  • 在函数外定义变量?
  • 是的,在main()@NullPointer 之外
  • main() 中的所有函数和所有变量在main() @NullPointer 之外都不起作用
  • 我不确定你想在这里做什么。
  • @rink.attendant.6 好的,我会展开,请稍等

标签: php function variables global


【解决方案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
?>

【讨论】:

  • 谢谢,我觉得最后一个对我来说还可以
【解决方案2】:

您没有为全局范围变量 $var 赋值。
只有main() 为名为@9​​87654325@ 的变量赋值,但仅限于main() 的范围内。只有main()echo $var; 实际打印该值。对sub() 的两次调用都不会产生输出。
试试吧

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

输出是

sub: 
main: My Variable
sub: 

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

【讨论】:

  • 好的,在你的例子中我会输出“sub: My Variable , main: My Variable , sub:”
  • 1.最后一行sub() 不起作用,因为这个函数在main()之外
  • 是的,它将显示全局 $var 的内容,它没有分配任何值,因此输出为空白。见phpfiddle.org/main/code/pgs-w78
猜你喜欢
  • 2022-08-02
  • 2020-04-04
  • 1970-01-01
  • 2013-07-13
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多