PHP學習筆記8 變數的作用域

2021-08-16 21:53:21 字數 1148 閱讀 4721

變數都有其自己的作用範圍,超出了範圍就不再有效。

php中的變數有3種作用範圍:區域性變數,全域性變數,和靜態變數

區域性變數

在函式內部定義的變數就是區域性變數,區域性變數的作用域就是這個函式。如果在函式外部對區域性變數進行複製,是無效的,因為那是對另乙個變數的賦值。

全域性變數

定義在所有函式以外的變數,就是全域性變數。全域性變數的作用域是整個php檔案。但是它的作用域達不到函式內部。

如果想讓乙個在函式體內部的變數成為全域性變數,就要在前面加global關鍵字。只有加入了global關鍵字,才可以在函式外部對它的值進行操作。

靜態變數

一般來說,在函式被呼叫結束後,函式體內部的變數都會被記憶體清除。如果想讓函式體內的變數在被呼叫完之後仍然存在,就需要使用static關鍵字來宣告。

下面這個例子說明的是區域性變數和全域性變數的使用:

<?php

$e1 = "outside the function";        //全域性變數$e1

function example()

example();    //呼叫函式,輸出區域性變數

echo $e1;    //輸出全域性變數

?>

可見,儘管名字相同,由於宣告的位置不一樣,變數的作用域是不同的,它們是不同的變數。

下面這個例子說明的是靜態變數與非靜態變數的區別:

<?php

function teststatic()

function nonstatic()

for($j=0;$j<10;$j++)    //迴圈10次輸出

teststatic();    //呼叫第1個函式

echo '

'; for($j=0;$j<10;$j++)    //迴圈10次輸出

nonstatic();    //呼叫第2個函式

?>

執行這個php檔案,可以發現,第1個迴圈輸出的是1到10這10個數字;第2個迴圈輸出的是10個1。

區別在**呢? 就在於$i 是否被宣告為static型別。一旦被宣告為static型別的變數,呼叫結束後,其值仍然保留。第二次呼叫的時候,函式中的初始化的語句就不會被執行了,而是繼續以現存的數值參與語句的執行,這樣,其輸出的值就跟非靜態變數不同了。

php變數作用域

1 在php中變數主要有 內建超級全域性變數,一般的變數,常量,全域性變數,靜態變數等。內建超級全域性變數 可以在指令碼的任何地方使用和可見。即如果我們在乙個php頁面中改變了其中的乙個值,那麼在其他php頁面中使用時,它的值也會發生改變。常量 一旦被宣告將可以在全域性可見,也就是說,它們可以函式內...

php變數作用域

學過c的人用php的時候一般會相當順手,而且感到php太方便太輕鬆。但在變數作用域這方面卻與 c有不同的地方,搞不好會相當鬱悶,就找不到錯誤所在。昨晚就與到這麼乙個問題,是全域性變數在函式中的問題。今天搜尋了一下,發現一篇相當不錯的文章,講了php中的變數作用域。是一位翻譯的 在這貼一下 變數的範圍...

php變數作用域

先引入官網的一句話 變數的範圍即它定義的上下文背景 也就是它的生效範圍 大部分的 php 變數只有乙個單獨的範圍。這個單獨的範圍跨度同樣包含了 include 和 require 引入的檔案。我理解的就是 php變數只有乙個單獨範圍就是指函式內變數的範圍單獨作用於函式內部,函式外部的變數作用域只在函...