PHP全局變數作用
Ⅰ php靜態變數和全局變數的區別
最大的差別還是在於作用域。
舉個例子:
<?php
functiona($a)
{
static$aa;
$aa[]=$a;
return$aa;
}
a(1);
a(2);
$a=a(3);
var_mp($a);
//輸出
//array(3){[0]=>int(1)[1]=>int(2)[2]=>int(3)}
以上是靜態變數的例子;
以上例子的驚天變數 $aa 是無法被外部訪問的。
再舉一個全局變數的例子:
<?php
global$aa;
functiona($a)
{
global$aa;
$aa[]=$a;
return$aa;
}
a(1);
a(2);
a(3);
$aa[]=4;
$aa[]=5;
var_mp($aa);
//輸出
//array(5){[0]=>int(1)[1]=>int(2)[2]=>int(3)[3]=>int(4)[4]=>int(5)}
這個時候,全局變數 $aa 是能被全局訪問的。
Ⅱ 用PHP開發時為什麼不要用全局變數
php沒有入口函數,都是些全局代碼。所以php的機制是在函數中不能直接訪問全局變數。相當於一個保護機制防止變數污染。
如果使用全局變數在子作用域會增加程序的耦合性。
Ⅲ PHP中全局變數global和$GLOBALS的區別分析
一、舉例比較
例一:
復制代碼 代碼如下:
<?php
$var1 = 1;
function test(){
unset($GLOBALS['var1']);
}
test();
echo $var1;
?>
因為$var1被刪除了,所以什麼東西都沒有列印。
例二:
復制代碼 代碼如下:
<?php
$var1 = 1;
function test(){
global $var1;
unset($var1);
}
test();
echo $var1;
?>
意外的列印了1。證明刪除的只是別名引用,其本身的值沒有受到任何的改變。
二、解釋
global $var其實就是&$GLOBALS['var'],調用外部變數的一個別名而已。
上面代碼中的$var1和$GLOBALS['var1']是指的同一變數,而不是兩個不同的變數。
PHP的全局變數和C語言有一點點不同。在C語言中,全局變數在函數中主動生效,除非被局部變數籠罩。這可能引起一些問題,有些人可能漫不經心的轉變一個全局變數。PHP中全局變數在函數中應用時必須用global申明為全局。
PHP的Global變數的作用是定義全局變數,但是這個全局變數不是應用於整個網站,而是應用於當前頁面,包括include或require的所有文件。
三、結論
1.$GLOBALS['var']是外部的全局變數本身
2.global $var是外部$var的同名引用或者指針。 你看過後很簡單吧以後不會可以向我一樣經常到後盾人找找相關教材看看就會了,希望能幫到你,給個採納吧謝謝
Ⅳ PHP Global變數定義當前頁面的全局變數實現探討
PHP
Global變數在實際應用中會發現許多問題需要我們不斷的去完善處理。我們在這篇文章中就針對PHP
Global變數出現的問題給出了一些具體的解決辦法。
1:PHP
Global變數的作用是定義全局變數,但是這個全局變數不是應用於整個網站,而是應用於當前頁面,包括include或require的所有文件
復制代碼
代碼如下:
$a=123;
function
aa()
{
Global
$a;
//如果不把$a定義為global變數
,函數體內是不能訪問$a的
echo
$a;
}
aa();
總結:在函數體內定義的PHP
Global變數,函數體外可以使用,在函數體外定義的global變數不能在函數體內使用,
復制代碼
代碼如下:
$glpbal
$a;
$a=123;
function
f()
{
echo
$a;
//錯誤,
}
再看看下面一例
復制代碼
代碼如下:
function
f()
{
global
$a;
$a=123;
}
f();
echo
$a;
//正確,可以使用
2:PHP
Global變數問題解析:
question:我在config.inc.php中定義了一些變數($a),在別的文件中函數外部
include("config.inc.php"),函數內部需要使用這些變數$a,如果沒有聲明的話,echo
$a是列印不出來任何東西的。因此聲明global
$a,但是有很多函數和很多變數,總不能不斷重復的這樣聲明吧?有什麼好的解決辦法,請指點。
answer1:先在config.inc.php里定義常量:define(常量名,常量值),再在其他需要用到的地方require
'config.inc.php',然後就能在這個文件里直接使用這個常量了。
answer2:我也有個辦法,就是定義數組,如$x[a],$x,那樣就只要聲明global
$x一個了。
answer3:我試了你的這個方法,不行啊。
answer4:改你的php.ini文件。
設置PHP
Global變數
為
on
Ⅳ php里什麼是全局變數和局部變數
在程式內定義的變數稱為局部變數,只在程式內部使用,隨程式結束而消失。定義在程式外部的變數就叫全局變數,可以被程式呼叫,但不會隨程式結束而消失。
Ⅵ PHP靜態全局變數和普通全局變數有什麼區別
以前在遠標了解過全局變數與全局靜態變數的區別:
(a)若程序由一個源文件構成時,全局變數與全局靜態變數沒有區別。
(b)若程序由多個源文件構成時,全局變數與全局靜態變數不同:全局靜態變數使得該變數成為定義該變數的源文件所獨享,即:全局靜態變數對組成該程序的其它源文件是無效的。
(c)具有外部鏈接的靜態;可以在所有源文件里調用;除了本文件,其他文件可以通過extern的方式引用;
靜態全局變數的作用:
(a)不必擔心其它源文件使用相同變數名,彼此相互獨立。
(b)在某源文件中定義的靜態全局變數不能被其他源文件使用或修改。
(c) 只能在本文件中使用!具有內部鏈接的靜態;不允許在其他文件里調用;
Ⅶ php全局變數問題
PHP 變數作用域
$count=0時,它是局部變數。作用域是當前函數一次調用。
但global $count;時,則其變為全局變數。因為test函數調用自身,所以$count是從第一次被調用開始一直都是全局變數。每次調用都保持著賦值以後的值。
當把global拿掉,他就111了。 因為沒有global,每次被調用都是一個新的$count。
如果全局變數$count一直保持著賦值以後的值,那為什麼最後一行代碼echo $count輸出的是0,而不是9?參考文獻(http://hounwang.com/lesson.html)
當然這個程序段執行時候test函數執行幾次,就對count加幾次,而當count不小於10開始,count--執行,並執行10次。最後他才變0;
Ⅷ PHP全局變數
$GLOBALS
$GLOBALS — 引用全局作用域中可用的全部變數
說明
一個包含了全部變數的全局組合數組。變數的名字就是數組的鍵。
範例
Example #1 $GLOBALS
範例
<?php
function test() {
$foo = "local variable";
echo '$foo in global scope: ' . $GLOBALS["foo"] . "\n";
echo '$foo in current scope: ' . $foo . "\n";
}
$foo = "Example content";
test();
?>
以上常式的輸出類似於:
$foo in global scope: Example content
$foo in current scope: local variable
注釋
Note:
「Superglobal」也稱為自動化的全局變數。這就表示其在腳本的所有作用域中都是可用的。不需要在函數或方法中用 global $variable; 來訪問它。
Note: 變數可用性
與所有其他超全局變數不同,$GLOBALS在PHP中總是可用的。
Ⅸ php全局變數用public 跟global的區別
$globals
—
引用全局作用域中可用的全部變數。
一個包含了全部變數的全局組合數組。變數的名字就是數組的鍵。
即出現過的全局變數,就可以通過$globals這個數組取得。
php生命周期中,定義在函數體外部的所謂全局變數,函數內部是不能直接獲得的。
Ⅹ PHP中全局變數global和$GLOBALS的區別分析
1:Global的作用是定義全局變數,但是這個全局變數不是應用於整個網站,而是應用於當前頁面,包括include或require的所有文件。
2:在 數組中,每一個變數為一個元素,鍵名對應變數名,值對應變數的內容。GLOBALS數組中,每一個變數為一個元素,鍵名對應變數名,值對應變數的內容。GLOBALS 之所以在全局范圍內存在,是因為 是一個超全局變數。注意GLOBALS是一個超全局變數。注意GLOBALS 的寫法,比如變數寫法為a1,寫法為GLOBALS['a1']。