下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第PHP中$GLOBALS與global的區(qū)別詳解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="Examplecontent";
test();
functiontest(){
$foo="localvariable";
echo'$fooincurrentscope:'.$foo."br
echo'$fooinglobalscope:'.$GLOBALS["foo"]."br
}
如上的例子,要訪問外部的$foo必須使用$GLOBALS數(shù)組。對于通過include文件進(jìn)來的外部全局變量也適用。
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的所有文件。
二、實例講解
functiont1(){
global$var1,$var2;
$var2=$var1;
functiont2(){
$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呢?再修改一下例子:
functiont1(){
global$var1;
$var1=2;
unset($var1);
functiont2(){
$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定義全局變量。
functiontest_global(){
global$var1;
$var1='ok';
unset($var1);
test_global();
$var2=$var1;
unset($var1);
echo$var2;
先不給出結(jié)果,自己運(yùn)行一下程序。函數(shù)內(nèi)部的變量可以訪問到了。從結(jié)果可以看出,unset只是斷開變量名與變量值連接,并沒有馬上銷毀變量的值,而且在函數(shù)內(nèi)部定義的全局變量,實際在外部只是使用了函數(shù)內(nèi)部的別名而已,所以我們在外面依然可以訪問$var1。
例二:$GLOBALS在函數(shù)內(nèi)部訪問函數(shù)外面定義的變量。
$codetc='out';
functionff(){
echo$GLOBALS['codetc'];
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年秋季中國石油天然氣集團(tuán)有限公司西部鉆探工程有限公司高校畢業(yè)生招聘(公共基礎(chǔ)知識)綜合能力測試題附答案
- 2026北京科技大學(xué)教師崗位招聘筆試備考題庫及答案解析
- 2026天津中醫(yī)藥大學(xué)2026年第二批招聘4人筆試參考題庫及答案解析
- 2025廣東廣州市越秀區(qū)林業(yè)和園林局招聘輔助人員1人考試參考題庫附答案
- 2025年湖南益陽安化縣醫(yī)療衛(wèi)生單位備案制護(hù)理人員招聘15人(第二批)(公共基礎(chǔ)知識)綜合能力測試題附答案
- 2025年武漢長江新區(qū)公開招聘社區(qū)專職工作人員53人(公共基礎(chǔ)知識)綜合能力測試題附答案
- 2025年河南信息科技學(xué)院籌建處公開選調(diào)工作人員20名備考題庫附答案
- 2026春季云南昭通市綏江縣玉泉幼兒園編外臨聘教師招聘5人筆試模擬試題及答案解析
- 2026安徽皖信人力資源管理有限公司招聘駕駛員2人筆試備考題庫及答案解析
- 2026中國聯(lián)通博州分公司招聘10人(新疆)筆試模擬試題及答案解析
- 上海市二級甲等綜合醫(yī)院評審標(biāo)準(zhǔn)(2024版)
- 藥物發(fā)錯藥不良事件分析
- 油漆班組安全晨會(班前會)
- 消費類半固態(tài)電池項目可行性研究報告
- DBJ04∕T 398-2019 電動汽車充電基礎(chǔ)設(shè)施技術(shù)標(biāo)準(zhǔn)
- 山東省濟(jì)南市2024年1月高二上學(xué)期學(xué)情期末檢測英語試題含解析
- 口腔門診醫(yī)療質(zhì)控培訓(xùn)
- (正式版)JBT 9229-2024 剪叉式升降工作平臺
- HGT4134-2022 工業(yè)聚乙二醇PEG
- 小學(xué)教職工代表大會提案表
- ESC2023年心臟起搏器和心臟再同步治療指南解讀
評論
0/150
提交評論