首頁 php教程 PHP源码 深入理解php中$GLOBALS与global区别

深入理解php中$GLOBALS与global区别

Jun 08, 2016 pm 05:22 PM
global nbsp test var

在php中$GLOBALS是超全局变量而global也是一个全局变量,那么它们在应用中有什么区别呢,下面我就整理了一些相关的例子各各位同学一起分享吧。

<script>ec(2);</script>

php中有一个不为很多人所用的超全局变量$GLOBALS。合理使用这个变量能使工作变得更加有效率,本篇文章主要分析一下这个超全局变量的用法以及$GLOBALS和global的区别。

$GLOBALS定义:引用全局作用域中可用的全部变量(一个包含了全部变量的全局组合数组。变量的名字就是数组的键),与所有其他超全局变量不同,$GLOBALS在PHP代码中任何地方总是可用的,自己可以通过打印$GLOBALS这个变量的结果就知道了。

global与$GLOBALS['']区别

$GLOBALS

$GLOBALS — 引用全局作用域中可用的全部变量
说明 ¶

一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

 

在PHP生命周期中,定义在函数体外部的所谓全局变量,函数内部是不能直接获得的。如果要在函数体内访问外部定义的全局变量,可以通过global声明或者直接使用$GLOBALS来进行访问,例如:

$var1='www.111cn.net';
$var2='www.google.cn';
test();
function test(){
    $var1='taobao';
    echo $var1,'
';
 global $var1;
 echo $var1,'
';
    echo $GLOBALS['var2'];
}


结果将打印为:

taobao
www.111cn.net
www.google.cn

下面主要说明一下global和$GLOBALS的区别:

$GLOBALS['var']是外部的全局变量本身,而global $var是外部$var的同名引用或者指针,也就是说global在函数产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量,而$GLOBALS[]确确实实调用的是外部的变量,函数内外会始终保持一致。


下面通过例子说明一下:

 

$var1=1;

$var2=2;

function test(){

    $GLOBALS['var2']=&$GLOBALS['var1'];

}

test();

echo $var2;
打印结果为1


$var1=1;

$var2=2;

function test(){

    global $var1,$var2;

    $var2=&$var1;

}

test();

echo $var2;
打印结果为2。为什么会打印结果为2呢?其实就是因为$var1的引用指向了$var2的引用地址。导致实质的值没有改变。我们再来看一个例子吧。

 

$var1=1;

function test(){

    unset($GLOBALS['var1']);

}

test();

echo $var1;

因为$var1被删除了,所以什么东西都没有打印。

 

$var1=1;

function test(){

    global $var1;

    unset($var1);

}

test();

echo $var1;
打印结果为1。证明删除的只是别名|引用,起本身的值没有受到任何的改变。也就是说global $var其实就是$var=&$GLOBALS['var']。调用外部变量的一个别名而已。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
華為Watch GT 5智慧手錶獲得新功能更新 華為Watch GT 5智慧手錶獲得新功能更新 Oct 03, 2024 am 06:25 AM

華為正在全球推出Watch GT 5和Watch GT 5 Pro智慧手錶的軟體版本5.0.0.100(C00M01)。這兩款智慧手錶最近在歐洲推出,標準型號是該公司最便宜的型號。這和諧

鐵拳桑德斯上校的夢想被肯德基炸了 鐵拳桑德斯上校的夢想被肯德基炸了 Oct 02, 2024 am 06:07 AM

《鐵拳》系列總監原田勝宏曾認真嘗試將桑德斯上校帶入這款標誌性格鬥遊戲中。在接受 TheGamer 採訪時,原田透露,他向日本肯德基提出了這個想法,希望將這位快餐傳奇人物納入其中。

Cyber​​truck FSD 評論稱讚快速車道切換和全螢幕視覺化 Cyber​​truck FSD 評論稱讚快速車道切換和全螢幕視覺化 Oct 01, 2024 am 06:16 AM

特斯拉正在推出最新的全自動駕駛(監督)版本12.5.5,並最終帶來了承諾的Cyber​​truck FSD 選項,距離皮卡上市十個月後,該功能包含在基礎系列的裝飾價格中。 F

Garmin 透過新的更新發布了針對多款智慧手錶的冒險賽車活動改進 Garmin 透過新的更新發布了針對多款智慧手錶的冒險賽車活動改進 Oct 01, 2024 am 06:40 AM

Garmin 將於本月底為其最新的高階智慧手錶提供一組新的穩定更新。回顧一下,該公司發布了系統軟體 11.64,以解決 Enduro 3、Fenix E 和 Fenix 8 的高電池消耗問題(亞馬遜售價 1,099.99 美元)。

搭載 HyperOS 的新款小米米家石墨烯油汀到貨 搭載 HyperOS 的新款小米米家石墨烯油汀到貨 Oct 02, 2024 pm 09:02 PM

小米即將在中國推出米家石墨烯油汀暖爐。該公司最近在其優品平台上成功舉辦了一次智慧家居產品眾籌活動。根據頁面顯示,該設備已開始出貨至

第一眼:即將推出的 Anker Zolo 4 連接埠 140W 帶顯示壁式充電器的拆箱視訊洩露 第一眼:即將推出的 Anker Zolo 4 連接埠 140W 帶顯示壁式充電器的拆箱視訊洩露 Oct 01, 2024 am 06:32 AM

2024 年 9 月早些時候,Anker 的 Zolo 140W 充電器被洩露,這是該公司首款帶有顯示器的壁式充電器,這引起了轟動。現在,小李TV在YouTube上發布的新開箱影片讓我們親眼目睹了這款hi

三星 Galaxy Z Fold 特別版透露將於 10 月底登陸,但名稱出現衝突 三星 Galaxy Z Fold 特別版透露將於 10 月底登陸,但名稱出現衝突 Oct 01, 2024 am 06:21 AM

三星期待已久的「特別版」可折疊手機的推出又迎來了另一個轉折。最近幾週,有關所謂 Galaxy Z Fold 特別版的傳言相當安靜。相反,焦點已轉移到 Galaxy S25 系列,包括

Manjaro 24.1「Xahea」與 KDE Plasma 6.1.5、VirtualBox 7.1 等一起發布 Manjaro 24.1「Xahea」與 KDE Plasma 6.1.5、VirtualBox 7.1 等一起發布 Oct 02, 2024 am 06:06 AM

Manjaro 已有十多年的歷史,被認為是最用戶友好的 Linux 發行版之一,適合初學者和高級用戶,易於安裝和使用。這個基於 Arch 的發行版主要在奧地利、德國和法國開發

See all articles