您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“怎么搞定PHP超級(jí)全局變量”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么搞定PHP超級(jí)全局變量”吧!
在函數(shù)外部定義的全局變量是不能在函數(shù)內(nèi)部引用的,但是有些時(shí)候卻需要在函數(shù)內(nèi)使用這些全局變量,這時(shí)候就要用到超級(jí)全局變量,超級(jí)全局變量是可以再函數(shù)內(nèi)部引用的。
PHP中預(yù)定義了幾個(gè)超級(jí)全局變量 ,這也就是說它們?cè)谝粋€(gè)腳本的全部的作用域中都可以被引用。 不需要特別說明,超級(jí)全局變量就可以在函數(shù)及類中使用。
PHP超級(jí)全局變量:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
今天我們先來看一下幾個(gè)在日常使用中常用到的超級(jí)全局變量,接下來我們通過一些實(shí)例來看一下,這些超級(jí)全局變量的一些用法和特點(diǎn)。
首先,我們先來看:
PHP $GLOBALS
$GLOBALS
是一個(gè)預(yù)定義的超全局?jǐn)?shù)組,其中包含了全局作用域中的所有可用變量,變量的名字就是數(shù)組的鍵。$GLOBALS在一個(gè)PHP腳本的全部作用域中都可以訪問。
示例如下:
<?php //定義兩個(gè)全局變量,函數(shù)內(nèi)部不可以訪問 $a = 75; $b = 25; //定義函數(shù) function addition() { //將全局變量變?yōu)槌?jí)全局變量,這樣在函數(shù)內(nèi)部就可以正常訪問了 $GLOBALS['c'] = $GLOBALS['a'] + $GLOBALS['b']; } //調(diào)用函數(shù) addition(); //輸出函數(shù)內(nèi)部定義的全局變量 echo $c; ?>
輸出結(jié)果:
$GLOBALS 不限定必須在函數(shù)內(nèi)部使用,在程序的任意位置都能使用。由上述示例看得出,全局變量變?yōu)槌?jí)全局變量,這樣在函數(shù)內(nèi)部就可以正常訪問了。
global
還有一個(gè)與$GLOBALS 很類似的叫 global
關(guān)鍵字,它也可以讓我們?cè)诤瘮?shù)內(nèi)部使用在函數(shù)外部定義的全局變量。
語法格式如下:
global 變量1, 變量2, ...
global 關(guān)鍵字后面可以和多個(gè)變量作為參數(shù),多個(gè)變量之間以“,”(逗號(hào))分隔。同時(shí),使用global要注意一些關(guān)鍵點(diǎn):
global 關(guān)鍵字,不能在函數(shù)外部使用,只能在函數(shù)內(nèi)部使用;
global 關(guān)鍵字只能用來引用函數(shù)外部的全局變量,在引用時(shí)不能直接賦值,賦值和聲明語句需要分開寫;
在函數(shù)內(nèi)部銷毀一個(gè)使用 global 關(guān)鍵字修飾的變量時(shí),函數(shù)外部的變量不受影響。
示例如下:
<?php $a = 1; $b = 2; $c = 3; function demo(){ global $a, $b; echo "變量 a:".$a; echo "<br>變量 b:".$b; echo "<br>變量 c:".$c; } demo(); ?>
在上述例子中,定義了三個(gè)變量,但是在函數(shù)內(nèi)global關(guān)鍵字只修飾了兩個(gè)變量,那輸出結(jié)果會(huì)有什么影響呢?
輸出結(jié)果:
可以看出,結(jié)果只輸出了變量a和b的,因?yàn)間lobal關(guān)鍵字只在函數(shù)內(nèi)修飾了兩個(gè),所以變量c沒有使用成功。
通過兩個(gè)例子我們能夠看出與 global 相比,$GLOBALS 有一下幾點(diǎn)不同:
global $ 指的是對(duì)函數(shù)外部同名變量的引用,是兩個(gè)互不影響的變量,而 $GLOBALS[] 指的是函數(shù)外部變量本身,是一個(gè)變量。
$GLOBALS 不限定必須在函數(shù)內(nèi)部使用,在程序的任意位置都能使用。
PHP $_SERVER
PHP $_SERVER準(zhǔn)確來說是一個(gè)數(shù)組,$_SERVER 包含了頭信息、路徑、以及腳本位置等等信息。這個(gè)數(shù)組中的項(xiàng)目由 Web 服務(wù)器創(chuàng)建。服務(wù)器可能會(huì)忽略一些,不一定每個(gè)服務(wù)器都提供全部項(xiàng)目。
接下來給大家舉個(gè)例子如何使用PHP $_SERVER:
<?php //輸出當(dāng)前腳步的文件名 echo "<h4>輸出當(dāng)前腳步的文件名</h4>"; echo $_SERVER['PHP_SELF']; echo "<hr/>"; //當(dāng)前腳步所在服務(wù)器的主機(jī)名 echo "<h4>當(dāng)前腳步所在服務(wù)器的主機(jī)名</h4>"; echo $_SERVER['SERVER_NAME']; echo "<hr/>"; //當(dāng)前請(qǐng)求頭中 Host echo "<h4>當(dāng)前請(qǐng)求頭中 Host</h4>"; echo $_SERVER['HTTP_HOST']; echo "<hr/>"; //引導(dǎo)用戶代理到當(dāng)前頁的前一頁的地址(如果存在) echo "<h4>引導(dǎo)用戶代理到當(dāng)前頁的前一頁的地址(如果存在)</h4>"; echo $_SERVER['HTTP_REFERER']; echo "<hr/>"; //用來檢查瀏覽頁面的訪問者在用什么操作系統(tǒng) echo "<h4>用來檢查瀏覽頁面的訪問者在用什么操作系統(tǒng)</h4>"; echo $_SERVER['HTTP_USER_AGENT']; echo "<hr/>"; //包含當(dāng)前腳本的路徑 echo "<h4>包含當(dāng)前腳本的路徑</h4>"; echo $_SERVER['SCRIPT_NAME']; ?>
輸出結(jié)果
給大家分享一下, 更多$_SERVER 變量中的重要元素:
$_SERVER['PHP_SELF']
---當(dāng)前執(zhí)行腳本的文件名,與 document root 有關(guān)。
$_SERVER['GATEWAY_INTERFACE']
---服務(wù)器使用的 CGI 規(guī)范的版本。
$_SERVER['SERVER_ADDR']
---當(dāng)前運(yùn)行腳本所在的服務(wù)器的 IP 地址。
$_SERVER['SERVER_NAME']
---當(dāng)前運(yùn)行腳本所在的服務(wù)器的主機(jī)名。
$_SERVER['SERVER_SOFTWARE']
---服務(wù)器標(biāo)識(shí)字符串,在響應(yīng)請(qǐng)求時(shí)的頭信息中給出。
$_SERVER['SERVER_PROTOCOL']
---請(qǐng)求頁面時(shí)通信協(xié)議的名稱和版本。
$_SERVER['REQUEST_METHOD']
---訪問頁面使用的請(qǐng)求方法。
$_SERVER['REQUEST_TIME']
---請(qǐng)求開始時(shí)的時(shí)間戳。從 PHP 5.1.0 起可用。
$_SERVER['QUERY_STRING']
---query string(查詢字符串),如果有的話,通過它進(jìn)行頁面訪問。
$_SERVER['HTTP_ACCEPT']
---當(dāng)前請(qǐng)求頭中 Accept: 項(xiàng)的內(nèi)容,如果存在的話。
$_SERVER['HTTP_ACCEPT_CHARSET']
---當(dāng)前請(qǐng)求頭中 Accept-Charset: 項(xiàng)的內(nèi)容,如果存在的話。
$_SERVER['HTTP_HOST']
---當(dāng)前請(qǐng)求頭中 Host: 項(xiàng)的內(nèi)容,如果存在的話。
$_SERVER['HTTP_REFERER']
---引導(dǎo)用戶代理到當(dāng)前頁的前一頁的地址(如果存在)。
$_SERVER['HTTPS']
---如果腳本是通過 HTTPS 協(xié)議被訪問,則被設(shè)為一個(gè)非空的值。
$_SERVER['REMOTE_ADDR']
---瀏覽當(dāng)前頁面的用戶的 IP 地址。
$_SERVER['REMOTE_HOST']
---瀏覽當(dāng)前頁面的用戶的主機(jī)名。DNS 反向解析不依賴于用戶的 REMOTE_ADDR。
$_SERVER['REMOTE_PORT']
---用戶機(jī)器上連接到 Web 服務(wù)器所使用的端口號(hào)。
$_SERVER['SCRIPT_FILENAME']
---當(dāng)前執(zhí)行腳本的絕對(duì)路徑。
$_SERVER['SERVER_ADMIN']
---該值指明了 Apache 服務(wù)器配置文件中的 SERVER_ADMIN 參數(shù)。如果腳本運(yùn)行在一個(gè)虛擬主機(jī)上,則該值是那個(gè)虛擬主機(jī)的值。
$_SERVER['SERVER_PORT']
---Web 服務(wù)器使用的端口。默認(rèn)值為 "80"。如果使用 SSL 安全連接,則這個(gè)值為用戶設(shè)置的 HTTP 端口。
$_SERVER['SERVER_SIGNATURE']
---包含了服務(wù)器版本和虛擬主機(jī)名的字符串。
$_SERVER['PATH_TRANSLATED']
---當(dāng)前腳本所在文件系統(tǒng)(非文檔根目錄)的基本路徑。這是在服務(wù)器進(jìn)行虛擬到真實(shí)路徑的映像后的結(jié)果。
$_SERVER['SCRIPT_NAME']
---包含當(dāng)前腳本的路徑。這在頁面需要指向自己時(shí)非常有用。__FILE__ 常量包含當(dāng)前腳本(例如包含文件)的完整路徑和文件名。
$_SERVER['SCRIPT_URI']
---URI 用來指定要訪問的頁面。例如 "/index.html"。
到此,相信大家對(duì)“怎么搞定PHP超級(jí)全局變量”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。