PHP GLOBALS超全域性變數分析

2022-06-12 01:42:06 字數 1315 閱讀 2653

php中有乙個不為很多人所用的超全域性變數$globals。合理使用這個變數能使工作變得更加有效率,本篇文章主要分析一下這個超全域性變數的用法以及$globals和global的區別。

$globals定義:引用全域性作用域中可用的全部變數(乙個包含了全部變數的全域性組合陣列。變數的名字就是陣列的鍵),與所有其他超全域性變數不同,$globals在php**中任何地方總是可用的,自己可以通過列印$globals這個變數的結果就知道了。

在php生命週期中,定義在函式體外部的所謂全域性變數,函式內部是不能直接獲得的。如果要在函式體內訪問外部定義的全域性變數,可以通過global宣告或者直接使用$globals來進行訪問,例如:

<?php

$var1='www.phpernote.com';

$var2='www.google.cn';

test();

function test()

結果將列印為:

taobao

www.phpernote.com

www.google.cn

下面主要說明一下global和$globals的區別:

$globals['var']是外部的全域性變數本身,而global $var是外部$var的同名引用或者指標,也就是說global在函式產生乙個指向函式外部變數的別名變數,而不是真正的函式外部變數,而$globals確確實實呼叫的是外部的變數,函式內外會始終保持一致。下面通過例子說明一下:

$var1=1;

$var2=2;

function test()

test();

echo $var2;

列印結果為1

$var1=1;

$var2=2;

function test()

test();

echo $var2;

列印結果為2。為什麼會列印結果為2呢?其實就是因為$var1的引用指向了$var2的引用位址。導致實質的值沒有改變。我們再來看乙個例子。

$var1=1;

function test()

test();

echo $var1;

因為$var1被刪除了,所以什麼東西都沒有列印。

$var1=1;

function test()

test();

echo $var1;

列印結果為1。證明刪除的只是別名|引用,起本身的值沒有受到任何的改變。也就是說global $var其實就是$var=&$globals['var']。呼叫外部變數的乙個別名而已。

PHP GLOBALS超全域性變數分析

php中有乙個不為很多人所用的超全域性變數 globals。合理使用這個變數能使工作變得更加有效率,本篇文章主要分析一下這個超全域性變數的用法以及 globals和global的區別。globals定義 引用全域性作用域中可用的全部變數 乙個包含了全部變數的全域性組合陣列。變數的名字就是陣列的鍵 與...

PHP 超全域性變數

globals 包含乙個引用指向每個當前指令碼的全域性範圍內有效的變數。該陣列的鍵名為全域性變數的名稱。從 php 3 開始存在 globals 陣列。server 變數由 web 伺服器設定或者直接與當前指令碼的執行環境相關聯。類似於舊陣列 http server vars 陣列 依然有效,但反對...

PHP超全域性變數

php 4.2.0以及後續版本中,php指令register globals的預設off.this是乙個重大的改變php.let register globals的關閉會影響到預定義變數的例子,在全球範圍內的validity.for設定,以獲得document root的值,將必須使用 server...