PHP函數(shù)范圍

2018-02-22 16:40 更新

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

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

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

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

例子

看看這個例子:


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

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

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

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

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

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



PHP全局變量

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

在PHP中,在某個函數(shù)之外創(chuàng)建的所有變量,在某種意義上,全局的,因為它們可以通過腳本中的“不在函數(shù)內(nèi)部"的任何其他代碼來訪問。

要在函數(shù)內(nèi)部使用這樣的變量,請寫入字全局,后跟函數(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ù)通過聲明它是全局使用來訪問$ Global變量全局語句。 然后,該函數(shù)可以使用該變量來顯示問候語。



實施例1

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


<?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變量聲明為全局變量,并給它一個值。

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

實施例2

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


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

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

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

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

$localbar = $GLOBALS["bar"]; 

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

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

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

注意

我們也可以在同一行上同時聲明多個全局變量,只是分開變量使用逗號:

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

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號