PHP中全局变量global和$GLOBALS[]的区别
PHP的全局变量和C语言有一点点不同。在C语言中,全局变量在函数中主动生效,除非被局部变量笼罩。这可能引起一些问题,有些人可能漫不经心的转变一个全局变量。PHP中全局变量在函数中应用时必须用global申明为全局。
一、举例比较
例一:代码如下
<?php $var1 = 1; function test() { unset($GLOBALS['var1']); } 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的同名引用或者指针。
文章链接:
随便收藏,请保留本文地址!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

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

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

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

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

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

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

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

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