PHP函数范围

2018-02-22 16:40 更新

PHP教程 - PHP函数范围

在函数和类之外声明的变量是全局变量。全局变量可用在脚本中的其他位置。

函数变量是自包含的,不会影响主脚本中的变量。

来自主脚本的变量不会在函数内部隐式提供。

例子

看看这个例子:


<?PHP
function foo() { 
   $bar = "www.w3cschool.cn"; 
} 
$bar = "PHP"; 
foo(); 
print $bar; 
?>

上面的代码生成以下结果。

脚本的执行从 $ bar =“PHP"行开始,然后调用 foo()函数。

foo() $ bar 设置为www.w3cschool.cn,然后将控制权返回到主脚本 $ bar 被打印出来。

函数 foo()被调用,并且不知道 $ bar 变量存在于全局作用域中,在其局部作用域创建一个 $ bar 变量。

一旦函数结束,所有本地作用域都消失了,离开原来的 $ bar 变量完好无损。



PHP全局变量

可以在脚本中的任何地方访问全局变量,无论是内部还是外部一个函数。

在PHP中,在某个函数之外创建的所有变量,在某种意义上,全局的,因为它们可以通过脚本中的“不在函数内部"的任何其他代码来访问。

要在函数内部使用这样的变量,请写入字全局,后跟函数的代码块中的变量名。


<?PHP//from  w ww.j av  a  2 s. c o m
         $myGlobal = "Hello there!"; 

         function hello() { 
            global $myGlobal; 
            echo "$myGlobal\n"; 
         } 

         hello(); // Displays "Hello there!"  
?>

上面的代码生成以下结果。

hello()函数通过声明它是全局使用来访问$ Global变量全局语句。 然后,该函数可以使用该变量来显示问候语。



实施例1

我们不需要在函数之外创建一个变量来将其用作全局变量。看看下面的脚本:


<?PHP//w ww. j  a v a2  s.c o m
         function setup() { 
           global $myGlobal; 
           $myGlobal = "Hello there!"; 
         } 

         function hello() { 
           global $myGlobal; 
           echo "$myGlobal\n"; 
         } 

         setup(); 
         hello(); // Displays "Hello there!"   
?>

上面的代码生成以下结果。

在此脚本中,首先调用setup()函数。它将$ Global变量声明为全局变量,并给它一个值。

然后调用hello()函数。它也将$ myGlobal声明为全局的,这意味着它现在可以访问它的值  之前由setup()设置并显示它。

实施例2

$ GLOBALS 数组可以访问函数中的全局变量。在全局范围中声明的所有变量都在 $ GLOBALS 数组中,您可以在脚本中的任何位置访问。 这里是一个示范:


<?PHP
function foo() { 
   $GLOBALS["bar"] = "www.w3cschool.cn"; 
} 

$bar = "PHP"; 
foo(); 
print $bar; 
?>

上面的代码生成以下结果。

我们可以以同样的方式读取变量:

$localbar = $GLOBALS["bar"]; 

PHP GLOBAL关键字允许在本地访问变量。

function myfunc() {                                                                            
    GLOBAL $foo, $bar, $baz;                                                               
    ++$baz;                                                                                
} 

上面的代码读取全局变量 $ foo $ bar $ baz 。 的 ++ $ baz 行将使$ baz增加1,这将反映在全局范围中。

注意

我们也可以在同一行上同时声明多个全局变量,只是分开变量使用逗号:

function myFunction() { 
  global $oneGlobal, $anotherGlobal; 
}   

小心全局变量。如果您在许多不同的地方修改全局变量的值在你的应用程序中,它可能使调试你的代码很困难。

一般来说,你应该避免使用全局变量,除非它是严格必要的。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号