PHP全局变量在嵌套函数中不可见

时间:2019-01-31 07:01:01

标签: php

我有以下代码:

<?php
   $a = 1;
   function_one();
?>

<?php
   function_one() {
      global $a;
      function_two();
?>

<?php
   function_two() {
      function_three();
   }
?>

<?php
   function_three() {
      echo ($a);
   }
?>

function_three()内,变量$a无法访问,尽管我在function_one()中将其声明为全局变量,该变量调用function_two(),而后者依次调用function_three() 。为什么呢?我不得不在global $a内的function_three()上再次声明,以获取$a的价值。

是否有一种方法可以使$a内部可以访问function_three()而又不必再次声明global?是否有另一种方法可以使外部变量在function内部可见,而无需使用global并传入函数的参数?

1 个答案:

答案 0 :(得分:1)

您可以使用$GLOBALS

   <?php          
       $GLOBALS['a'] = 1;

       function function_one() {    
          function_two();
       }

        function function_two() {
          function_three();
       }

        function function_three() {
          echo $GLOBALS['a'];
       }

       function_one();
    ?>

输出:

1

或者只是将全局对象导入本地范围,如提到的@DarkBee:

<?php

   $a = 1;

   function function_one() {    
      function_two();
   }

    function function_two() {
      function_three();
   }

    function function_three() {
        global $a;
        echo $a;
   }

   function_one();
?>

输出:

1