douman6245 2013-03-13 08:18
浏览 11
已采纳

到函数内的全局变量

I have problem to Global Variables inside functions

<?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. I just want to global $var inside sub functions
  2. sub() will not work outside main() function

I tied to use GLOBAL but it show nothing ... Any ?

  • 写回答

2条回答 默认 最新

  • doujiongqin0687 2013-03-13 08:31
    关注

    Not sure if i understand what you want, but your $var is not global. its a local variable inside main()

    a variable is only global, if you declare it outside of a function or class.

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

    why would you declare a method inside a method to call it from there?

    maybe something like this is what you want...

    <?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
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同