Php 函数中的全局变量

Php 函数中的全局变量,php,function,variables,global,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"

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

<?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
?>

  • 我只想在子函数中全局
    $var
  • sub()

  • 我绑定到使用
    全局
    ,但它没有显示任何内容。。。有吗?

    您没有将值分配给全局范围变量
    $var

    只有
    main()
    为名为
    $var
    的变量赋值,但只在
    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();
    

    请阅读;-)

    不确定我是否理解您想要什么,但您的
    $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
    ?>
    
    
    
    在函数外部定义变量?是的,在
    main()
    @NullPointerAll函数外部和
    main()
    内部的所有变量在
    main()
    @nullpointer()外部不起作用。我不确定您在这里要做什么。@rink.attendant.6好的,我将展开,只是一个minOk,在您的示例中,我将输出为“sub:My Variable,main:My Variable,sub:“1.最后一行
    sub()
    将不起作用,因为这个函数在
    main()
    之外。是的,它将显示全局$var的内容,它没有赋值,因此输出为空。谢谢,我认为最后一行对我来说没问题。”
    <?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
    ?>