成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

PHP中$GLOBALS與global的區(qū)別是什么-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)PHP中$GLOBALS與global的區(qū)別是什么,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、香河網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、成都商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為香河等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

PHP中$GLOBALS和global都可以實現(xiàn)全局變量的功能,所以很多人都認(rèn)為global和$GLOBALS[]只是寫法上面的差別,其實不然。$GLOBALS 是一個超級全局變量,其實是一個數(shù)組,而global 則是一個聲明全局變量的關(guān)鍵字!

一、超全局變量$GLOBALS

PHP超全局變量有很多,如下的都屬于超全局變量(Superglobal):

$GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV。

官方說明:

$GLOBALS — 引用全局作用域中可用的全部變量。

一個包含了全部變量的全局組合數(shù)組。變量的名字就是數(shù)組的鍵。

即出現(xiàn)過的全局變量,就可以通過$GLOBALS這個數(shù)組取得。

  • $GLOBALS['var'] 是外部的全局變量$var本身。

  • global $var 是外部$var的同名引用或者指針。(錯誤:是個別名引用而已,非指針!?。。?/p>

PHP生命周期中,定義在函數(shù)體外部的所謂全局變量,函數(shù)內(nèi)部是不能直接獲得的。

$foo="Example content";
test();
function test(){
  $foo="local variable";
  echo '$foo in current scope: '.$foo."<br>";
  echo '$foo in global scope: '.$GLOBALS["foo"]."<br>";
}

如上的例子,要訪問外部的$foo必須使用 $GLOBALS 數(shù)組。對于通過include文件進來的外部全局變量也適用。

php中g(shù)lobal也有這樣的功能,它和$GLOBALS的區(qū)別在于:

global在函數(shù)產(chǎn)生一個指向函數(shù)外部變量的別名變量,而不是真正的函數(shù)外部變量。

$GLOBALS[]確確實實調(diào)用是外部的變量,函數(shù)內(nèi)外會始終保持一致。

對于類中的成員變量,類中函數(shù)必須使用$this->的方式訪問,不能用$GLOBALS方式:

global的作用是定義全局變量,但是這個全局變量不是應(yīng)用于整個網(wǎng)站,而是應(yīng)用于當(dāng)前頁面,包括include或require的所有文件。

二、實例講解

function t1(){
  global $var1,$var2;
  $var2=&$var1;
}
function t2(){
  $GLOBALS['var3']=&$GLOBALS['var1'];
}
$var1=5;
$var2=$var3=0;
t1();
print $var2."\n";
t2();
print $var3."\n";

執(zhí)行結(jié)果為:

0
5

為什么不是2個5而是1個0和1個5呢?再修改一下例子:

function t1(){
  global $var1;
  $var1=2;
  unset($var1);
}
function t2(){
  $GLOBALS['var1']=3;
  unset($GLOBALS['var1']);
}
$var1=1;
t1();
print $var1."\n";
t2();
print $var1."\n";

執(zhí)行結(jié)果只輸入一個2;

1、$GLOBALS是由所有已定義全局變量自動形成的數(shù)組。變量名就是該數(shù)組的索引。即$GLOBALS['var1']與函數(shù)外部的變量$var1是同一個變量,所以將$GLOBALS['var1'] 刪除后,該變量已不存在,所有無法輸出了。

注:$GLOBALS是自動全局變量。這意味著它在所有的腳本中都有效。在函數(shù)或方法中不需要使用 global $GLOBALS;來訪問它。

2、"global $var1;"是產(chǎn)生了函數(shù)外部$var1的別名變量"$var1",它不是真正的函數(shù)外部變量,他只存在于函數(shù)的內(nèi)部,所以即使在函數(shù)內(nèi)將別名變量刪除也不會影響外面的變量,但是可以修改函數(shù)外部變量的值。

或許有的人總想知道這個或那個的區(qū)別:

在php程序,包括其他程序的學(xué)習(xí)中,自己動手實驗,根據(jù)結(jié)果加上的思考,有的時候比上網(wǎng)查找可能會來得更快一些,更準(zhǔn)確一些。下面我們來講一下,php在全局范圍內(nèi)訪問變量要怎么辦?

例一:global定義全局變量。

function test_global(){
  global $var1;
  $var1='ok';
  unset($var1);
}
test_global();
$var2=&$var1;
unset($var1);
echo $var2;

先不給出結(jié)果,自己運行一下程序。函數(shù)內(nèi)部的變量可以訪問到了。從結(jié)果可以看出,unset只是斷開變量名與變量值連接,并沒有馬上銷毀變量的值,而且在函數(shù)內(nèi)部定義的全局變量,實際在外部只是使用了函數(shù)內(nèi)部的別名而已,所以我們在外面依然可以訪問$var1。

例二:$GLOBALS在函數(shù)內(nèi)部訪問函數(shù)外面定義的變量。

$codetc='out';
function ff(){
  echo $GLOBALS['codetc'];
}
ff();

直接在函數(shù)內(nèi)部使用$codetc是會出錯的。

上述就是小編為大家分享的PHP中$GLOBALS與global的區(qū)別是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站題目:PHP中$GLOBALS與global的區(qū)別是什么-創(chuàng)新互聯(lián)
URL地址:http://jinyejixie.com/article44/ccsihe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站策劃、品牌網(wǎng)站制作企業(yè)網(wǎng)站制作、移動網(wǎng)站建設(shè)域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
稷山县| 隆子县| 林州市| 台湾省| 锦州市| 罗定市| 盘锦市| 广水市| 龙里县| 尚志市| 叙永县| 海晏县| 任丘市| 怀宁县| 慈利县| 蒲城县| 宜君县| 和田市| 通渭县| 边坝县| 边坝县| 昭平县| 社旗县| 拜泉县| 泽州县| 治多县| 咸丰县| 潞城市| 西畴县| 新乡市| 阿图什市| 琼中| 垫江县| 河南省| 柞水县| 嘉善县| 靖远县| 新宁县| 元谋县| 环江| 嫩江县|