PHP的變數作用域

2021-09-19 17:15:28 字數 1718 閱讀 1037

全域性變數

有的人很不習慣php中的變數作用域,php中函式變數和全域性是完全隔絕的,也就是無法相互訪問。

<?php

$test='hello,world';

abc();//這裡什麼都不輸出,因為訪問不到$test變數

functionabc()?>

global和$globals

我們可以使用global關鍵字來宣告變數,上面的例子就變成了這樣

$test='hello,world';

abc();

functionabc()

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

$test='hello,world';

functionabc()

abc();

原來以為global和$globals除了寫法不一樣以為,其他都一樣,可是在實際應用中發現,2者的區別還是很大的! 看這個例子:

functiontest1()

functiontest2()

$v1= 1;

$v2=$v3= 0;

test1();

echo$v2."\n";

test2();

echo$v3."\n";

為什麼是這樣:

結果不應該是兩個1嗎?我們在看乙個例子

functiontest()

$a= 1;

test();

echo$a;結果

明明是unset了呀,為什麼還會列印出來呢?

眾所周知,我們的function裡面的永遠是個私有變數,global在函式產生乙個指向函式外部變數的別名變數,而不是真正的函式外部變數,unset的確是起作用了,它unset了乙個global 的值的引用,而$globals確確實實呼叫是外部的變數,函式內外會始終保持一致!

php變數作用域

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

php變數作用域

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

php變數作用域

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