php 中global關鍵字和 GLOBALS用法

2021-09-19 06:52:38 字數 1074 閱讀 3184

首先我們先看一段**

<?php

$a = 1 ; /* global scope */

function test ()

test ();

?>

這個指令碼不會有任何輸出,因為 echo 語句引用了乙個區域性版本的變數 $a ,而且在這個範圍內,它並沒有被賦值。你可能注意到 php 的全域性變數和 c 語言有一點點不同,在 c 語言中,全域性變數在函式中自動生效,除非被區域性變數覆蓋。這可能引起一些問題,有些人可能不小心就改變了乙個全域性變數。php 中全域性變數在函式中使用時必須宣告為 global。

global 關鍵字

首先,乙個使用 global 的例子,**如下:

<?php

$a = 1 ;

$b = 2 ;

function sum ()

sum ();

echo $b ;

?>

以上指令碼的輸出將是「3」。在函式中宣告了全域性變數 $a 和 $b 之後,對任一變數的所有引用都會指向其全域性版本。對於乙個函式能夠宣告的全域性變數的最大個數,php 沒有限制。

在全域性範圍內訪問變數的第二個辦法,是用特殊的 php 自定義 $globals 陣列。前面的例子可以寫成:

example #2 使用 $globals 替代 global,**如下:

<?php

$a = 1 ;

$b = 2 ;

function sum ()

sum ();

echo $b ;

?>

$globals 是乙個關聯陣列,每乙個變數為乙個元素,鍵名對應變數名,值對應變數的內容。 $globals 之所以在全域性範圍內存在,是因為 $globals 是乙個超全域性變數。以下範例顯示了超全域性變數的用處:

example #3 演示超全域性變數和作用域的例子

<?php

function test_global ()

?>

static關鍵字 和 global

類內部 宣告靜態成員,可以使用修飾符public protected private 訪問靜態屬性用 self 或 static 關鍵字 靜態變數屬於整個類 靜態函式內部沒有this指標,只能訪問靜態變數和靜態函式 類外部 靜態成員不需要例項化物件就可以訪問,類名 靜態成員名 子類繼承父類 子類訪問...

global和 nonlocal關鍵字

例如 def handu global a 利用外邊的a執行函式 a 10 print 函式內部 a a 20 handu print 外部函式 a 結果 函式內部 30 函式外部 30 開始分析 global關鍵字可以將區域性變數變成乙個全域性變數所以都是30 30 def hanfu globa...

nonlocal和global關鍵字

1.python的函式的概述 函式定義 函式呼叫 2.python函式中引數的型別和返回值 形參和實參 形參型別 普通引數 實參的傳遞的順序和個數和形參一直 關鍵字引數 指定傳遞的實參被特定形參接收 預設引數 形參中設定當前引數的預設值 可以不傳遞設定了預設引數的實參 不定長引數 乙個形參能夠接收任...