PHP函數(shù)范圍

2018-02-22 16:40 更新

PHP教程 - PHP函數(shù)范圍

在函數(shù)和類(lèi)之外聲明的變量是全局變量。全局變量可用在腳本中的其他位置。

函數(shù)變量是自包含的,不會(huì)影響主腳本中的變量。

來(lái)自主腳本的變量不會(huì)在函數(shù)內(nèi)部隱式提供。

例子

看看這個(gè)例子:


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

上面的代碼生成以下結(jié)果。

腳本的執(zhí)行從 $ bar =“PHP"行開(kāi)始,然后調(diào)用 foo()函數(shù)。

foo() $ bar 設(shè)置為www.o2fo.com,然后將控制權(quán)返回到主腳本 $ bar 被打印出來(lái)。

函數(shù) foo()被調(diào)用,并且不知道 $ bar 變量存在于全局作用域中,在其局部作用域創(chuàng)建一個(gè) $ bar 變量。

一旦函數(shù)結(jié)束,所有本地作用域都消失了,離開(kāi)原來(lái)的 $ bar 變量完好無(wú)損。



PHP全局變量

可以在腳本中的任何地方訪問(wèn)全局變量,無(wú)論是內(nèi)部還是外部一個(gè)函數(shù)。

在PHP中,在某個(gè)函數(shù)之外創(chuàng)建的所有變量,在某種意義上,全局的,因?yàn)樗鼈兛梢酝ㄟ^(guò)腳本中的“不在函數(shù)內(nèi)部"的任何其他代碼來(lái)訪問(wèn)。

要在函數(shù)內(nèi)部使用這樣的變量,請(qǐng)寫(xiě)入字全局,后跟函數(shù)的代碼塊中的變量名。


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

上面的代碼生成以下結(jié)果。

hello()函數(shù)通過(guò)聲明它是全局使用來(lái)訪問(wèn)$ Global變量全局語(yǔ)句。 然后,該函數(shù)可以使用該變量來(lái)顯示問(wèn)候語(yǔ)。



實(shí)施例1

我們不需要在函數(shù)之外創(chuàng)建一個(gè)變量來(lái)將其用作全局變量??纯聪旅娴哪_本:


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

上面的代碼生成以下結(jié)果。

在此腳本中,首先調(diào)用setup()函數(shù)。它將$ Global變量聲明為全局變量,并給它一個(gè)值。

然后調(diào)用hello()函數(shù)。它也將$ myGlobal聲明為全局的,這意味著它現(xiàn)在可以訪問(wèn)它的值  之前由setup()設(shè)置并顯示它。

實(shí)施例2

$ GLOBALS 數(shù)組可以訪問(wèn)函數(shù)中的全局變量。在全局范圍中聲明的所有變量都在 $ GLOBALS 數(shù)組中,您可以在腳本中的任何位置訪問(wèn)。 這里是一個(gè)示范:


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

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

上面的代碼生成以下結(jié)果。

我們可以以同樣的方式讀取變量:

$localbar = $GLOBALS["bar"]; 

PHP GLOBAL關(guān)鍵字允許在本地訪問(wèn)變量。

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

上面的代碼讀取全局變量 $ foo , $ bar $ baz 。 的 ++ $ baz 行將使$ baz增加1,這將反映在全局范圍中。

注意

我們也可以在同一行上同時(shí)聲明多個(gè)全局變量,只是分開(kāi)變量使用逗號(hào):

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

小心全局變量。如果您在許多不同的地方修改全局變量的值在你的應(yīng)用程序中,它可能使調(diào)試你的代碼很困難。

一般來(lái)說(shuō),你應(yīng)該避免使用全局變量,除非它是嚴(yán)格必要的。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)