溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么搞定PHP超級(jí)全局變量

發(fā)布時(shí)間:2021-10-18 12:13:49 來源:億速云 閱讀:164 作者:iii 欄目:編程語言

本篇內(nèi)容主要講解“怎么搞定PHP超級(jí)全局變量”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么搞定PHP超級(jí)全局變量”吧!

怎么搞定PHP超級(jí)全局變量

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é)果:

怎么搞定PHP超級(jí)全局變量

$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é)果:

怎么搞定PHP超級(jí)全局變量

可以看出,結(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é)果

怎么搞定PHP超級(jí)全局變量

給大家分享一下, 更多$_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í)!

向AI問一下細(xì)節(jié)

免責(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)容。

php
AI