首頁 php教程 php手册 PHP中全局变量global和$GLOBALS[]的区别

PHP中全局变量global和$GLOBALS[]的区别

May 25, 2016 pm 04:52 PM
global 全域變數

PHP的全局变量和C语言有一点点不同。在C语言中,全局变量在函数中主动生效,除非被局部变量笼罩。这可能引起一些问题,有些人可能漫不经心的转变一个全局变量。PHP中全局变量在函数中应用时必须用global申明为全局。

一、举例比较

例一:代码如下

<?php
$var1 = 1;
function test() {
    unset($GLOBALS[&#39;var1&#39;]);
}
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的同名引用或者指针。

文章链接:

随便收藏,请保留本文地址!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 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)

C++ 函數的局部變數和全域變數有什麼不同? C++ 函數的局部變數和全域變數有什麼不同? Apr 19, 2024 pm 03:42 PM

C++局部變數和全域變數的差異:可見性:局部變數僅限於定義函數,而全域變數在整個程式中可見。記憶體分配:局部變數在堆疊上分配,而全域變數在全域資料區分配。作用域:局部變數在函數內,而全域變數在整個程式中。初始化:局部變數在函數呼叫時初始化,而全域變數在程式啟動時初始化。重新創建:局部變數在每次函數呼叫時重新創建,而全域變數僅在程式啟動時創建。

go語言有靜態全域變數麼 go語言有靜態全域變數麼 Jul 11, 2023 pm 03:37 PM

go語言沒有靜態全域變量,它使用了一種更靈活的方式來處理全域變量的需求,全域變量通常是在包級被聲明,也就是在函數外部聲明的變量,這些變量在整個包中均是可見的,可以在套件中的任何函數中使用。

php request什麼意思 php request什麼意思 Jul 07, 2021 pm 01:49 PM

request的中文意思是“請求”,是php中的一個全域變量,是一個包含了“$_POST”、“$_GET”和“$_COOKIE”的數組。 「$_REQUEST」變數可以取得POST或GET方式提交的資料、COOKIE資訊。

在JavaScript中實現全域變數的安全性 在JavaScript中實現全域變數的安全性 Jun 15, 2023 pm 10:33 PM

隨著JavaScript的流行,越來越多的網站和應用程式都依賴JavaScript。然而,JavaScript中全域變數的使用可能存在安全性問題。在此文中,我將介紹如何在JavaScript中實現全域變數的安全性。避免使用全域變數最好的方法是避免使用全域變數。在JavaScript中,所有變數都預設為全域變量,除非它們在函數中聲明。因此,應盡可能使用局部變數

小米Mesh系統AC1200:全球推出覆蓋面積達370平方公尺的全新Wi-Fi Mesh系統 小米Mesh系統AC1200:全球推出覆蓋面積達370平方公尺的全新Wi-Fi Mesh系統 Jun 19, 2024 pm 12:13 PM

小米針對全球市場推出了另一款WLAN Mesh系統。繼AC1200路由器(亞馬遜售價約69歐元)在該國上市後,小米Mesh系統AC1200現已發布。新產品已於近日上市

Golang函數的全域變數和局部變數的資料競爭分析 Golang函數的全域變數和局部變數的資料競爭分析 May 21, 2023 am 08:19 AM

Golang是一種強型別程式語言,具有高效、簡潔、並發等特點,因此逐漸受到了越來越多的開發者的青睞。而在Golang的開發中,函數的全域變數和局部變數往往涉及資料競爭的問題。本文將從實際編碼的角度,對Golang函數中全域變數和局部變數的資料競爭問題進行分析。一、全域變數的資料競爭Golang全域變數在所有函數中均可訪問,因此如果不進行嚴謹的設計與編碼

C程式中全域變數的重新聲明 C程式中全域變數的重新聲明 Sep 20, 2023 pm 10:29 PM

我們將了解在不初始化的情況下重新宣告全域變數、透過初始化重新宣告全域變數、重新宣告全域變數並初始化兩次時,C和C++的行為有何不同。另外,我們將使用局部變數重複上述組合。 1.A)C程式:重新宣告全域變數而不進行初始化#include<stdio.h>intvar;intvar;intmain(){  printf("Var=%d",var);  return0;}輸出Var=0B) C++程式:

golang函數能否在goroutine中直接存取全域變數? golang函數能否在goroutine中直接存取全域變數? May 01, 2024 pm 05:51 PM

是的,Go函數在Goroutine中預設可以直接存取全域變數。原因:Goroutine繼承創建它的Goroutine的記憶體空間,包括對全域變數的存取權。

See all articles