av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

php語言

PHP中超全局變量$GLOBALS和global的區(qū)別

時間:2025-03-01 06:47:17 php語言 我要投稿
  • 相關(guān)推薦

PHP中超全局變量$GLOBALS和global的區(qū)別

  人之所以能,是相信能。努力總是會有收獲的。下面是小編整理的PHP中超全局變量$GLOBALS和global的區(qū)別,希望對大家有用,更多消息請關(guān)注應(yīng)屆畢業(yè)生網(wǎng)。
  一、超全局變量$GLOBALS
  PHP超全局變量有很多,如下的都屬于超全局變量(Superglobal):
  $GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST,$_ENV。
  官方說明:
  $GLOBALS — 引用全局作用域中可用的全部變量。
  一個包含了全部變量的全局組合數(shù)組。變量的名字就是數(shù)組的鍵。
  即出現(xiàn)過的全局變量,就可以通過$GLOBALS這個數(shù)組取得。
  PHP生命周期中,定義在函數(shù)體外部的所謂全局變量,函數(shù)內(nèi)部是不能直接獲得的。
  復(fù)制代碼
  $foo = "Example content";
  test(); function test() { $foo = "local variable"; echo '$foo in current scope: ' . $foo . "
  "; echo '$foo in global scope: ' . $GLOBALS["foo"] . "
  ";
  }
  復(fù)制代碼
  如上的例子,要訪問外部的$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的所有文件。
  二、實例講解
  復(fù)制代碼
  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";
  復(fù)制代碼
  執(zhí)行結(jié)果為:
  0
  5
  為什么不是2個5而是1個0和1個5呢?
  再修改一下例子:
  復(fù)制代碼
  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";
  復(fù)制代碼
  執(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定義全局變量。
  復(fù)制代碼
  function test_global() { global $var1; $var1 = 'ok'; unset($var1);
  }
  test_global(); $var2 = &$var1; unset($var1); echo $var2;
  復(fù)制代碼
  先不給出結(jié)果,自己運行一下程序。函數(shù)內(nèi)部的變量可以訪問到了。從結(jié)果可以看出,unset只是斷開變量名與變量值連接,并沒有馬上銷毀變量的值,而且在函數(shù)內(nèi)部定義的全局變量,實際在外部只是使用了函數(shù)內(nèi)部的別名而已,所以我們在外面依然可以訪問$var1。
  例二:$GLOBALS在函數(shù)內(nèi)部訪問函數(shù)外面定義的變量。
  $waibu = 'out'; function ff() { echo $GLOBALS['waibu'];
  }
  ff();
  直接在函數(shù)內(nèi)部使用$waibu是會出錯的。

【PHP中超全局變量$GLOBALS和global的區(qū)別】相關(guān)文章:

PHP中php://input和$-POST的區(qū)別08-26

php中的daddslashes()和saddslashes()的區(qū)別08-24

Java和PHP的區(qū)別09-09

php中數(shù)字0和空值的區(qū)別分析10-13

php empty()和isset()的區(qū)別09-28

php內(nèi)核分析之全局變量09-03

Java和PHP的區(qū)別有哪些09-30

PHP的語言結(jié)構(gòu)和函數(shù)的區(qū)別09-02

PHP和Java的主要區(qū)別10-11