ホームページ  >  記事  >  バックエンド開発  >  PHP スーパーグローバル変数を取得する方法 (整理および共有)

PHP スーパーグローバル変数を取得する方法 (整理および共有)

WBOY
WBOYオリジナル
2021-10-15 18:16:333472ブラウズ

前回の記事では「5分でわかるPHP匿名関数(具体例)」をご紹介しましたが、この記事ではPHPの匿名関数に関する知識を詳しく紹介しています。関数内で参照できるスーパー グローバル変数に関連する問題を見てください。皆さんのお役に立てれば幸いです。

PHP スーパーグローバル変数を取得する方法 (整理および共有)

PHP スーパー グローバル変数

関数の外で定義されたグローバル変数は関数内で参照できませんが、場合によってはこれらのグローバル変数を関数内で使用する必要がある場合は、スーパーグローバル変数を使用する必要があります。スーパーグローバル変数は関数内で参照できます。

いくつかのスーパー グローバル変数が PHP で事前定義されています。つまり、これらの変数はスクリプトのスコープ全体で参照できます。特別な命令なしで、スーパー グローバル変数を関数やクラスで使用できます。

#PHP スーパーグローバル変数

  • $GLOBALS

  • $_SERVER

  • $_REQUEST

  • $_POST

  • $_GET

  • $ _FILES

  • $_ENV

  • $_COOKIE

  • ## $_SESSION
  • 今日は、まず日常的によく使用されるいくつかのスーパー グローバル変数について説明し、次に、これらのスーパー グローバル変数の使用法と特性をいくつかの例を通して見ていきます。

まず、見てみましょう:

PHP $GLOBALS

$GLOBALS

は、グローバル スコープで使用可能なすべての変数を含む事前定義されたスーパーグローバル配列です。変数の名前は配列のキーです。 $GLOBALS には、PHP スクリプトのスコープ全体からアクセスできます。 例は次のとおりです。

<?php 
//定义两个全局变量,函数内部不可以访问
$a = 75; 
$b = 25;
//定义函数
function addition() 
{ 
//将全局变量变为超级全局变量,这样在函数内部就可以正常访问了
$GLOBALS[&#39;c&#39;] = $GLOBALS[&#39;a&#39;] + $GLOBALS[&#39;b&#39;]; 
}
//调用函数
addition();
//输出函数内部定义的全局变量 
echo $c; 
?>

出力結果:


PHP スーパーグローバル変数を取得する方法 (整理および共有)$GLOBALS は、must に限定されません。関数内で使用でき、プログラム内のどこでも使用できます。上記の例からわかるように、グローバル変数はスーパーグローバル変数となり、関数内で通常にアクセスできるようになります。


global


$GLOBALS によく似た

global

というキーワードもあります。関数の外で定義されたグローバル変数を関数内で使用します。 構文形式は次のとおりです。

global 变量1, 变量2, ...

global キーワードの後に​​はパラメータとして複数の変数を続けることができ、複数の変数は「,」 (カンマ) で区切られます。同時に、global を使用するときは、いくつかの重要な点に注意する必要があります:

    global キーワードは関数の外部では使用できませんが、関数の内部でのみ使用できます。
  • global キーワードは、関数外のグローバル変数を参照する場合にのみ使用でき、参照時に直接割り当てることはできません。代入ステートメントと宣言ステートメントは別々に記述する必要があります。
  • グローバル キーを使用して関数内のグローバル変数を破棄する ワードで変数を変更する場合、関数の外部の変数は影響を受けません。
  • 例は次のとおりです:

<?php
    $a = 1;
    $b = 2;
    $c = 3;
    function demo(){
        global $a, $b;
        echo "变量 a:".$a;
        echo "<br>变量 b:".$b;
        echo "<br>变量 c:".$c;
    }
    demo();
?>

上の例では 3 つの変数が定義されていますが、global キーワードは関数内の 2 つの変数のみを変更します。出力にはどのような影響がありますか?


出力結果:

PHP スーパーグローバル変数を取得する方法 (整理および共有)グローバル キーワードは変数内でのみ変更されるため、結果は変数 a と b のみを出力することがわかります。 function が 2 つあるため、変数 c は正常に使用されません。

2 つの例を通して、グローバルと比較すると、$GLOBALS には次の違いがあることがわかります。

    グローバル $ は、関数の外側で同じ名前の変数を参照します。参照は相互に影響を及ぼさない 2 つの変数ですが、$GLOBALS[] は変数である関数自体の外部変数を参照します。
  • $GLOBALS は関数内での使用に限定されず、プログラム内のどこでも使用できます。
#PHP $_SERVER

##PHP $_SERVER は正確には配列であり、$_SERVER にはヘッダー情報が含まれます、パス、スクリプトの場所、その他の情報。この配列内の項目は Web サーバーによって作成されます。サーバーは一部を無視する場合があり、すべてのアイテムがすべてのサーバーで利用できるわけではありません。
次に、PHP $_SERVER の使用例を示します。

<?php 
//输出当前脚步的文件名
echo "<h3>输出当前脚步的文件名</h3>";
echo $_SERVER[&#39;PHP_SELF&#39;];
echo "<hr/>";
//当前脚步所在服务器的主机名
echo "<h3>当前脚步所在服务器的主机名</h3>";
echo $_SERVER[&#39;SERVER_NAME&#39;];
echo "<hr/>";
//当前请求头中 Host
echo "<h3>当前请求头中 Host</h3>";
echo $_SERVER[&#39;HTTP_HOST&#39;];
echo "<hr/>";
//引导用户代理到当前页的前一页的地址(如果存在)
echo "<h3>引导用户代理到当前页的前一页的地址(如果存在)</h3>";
echo $_SERVER[&#39;HTTP_REFERER&#39;];
echo "<hr/>";
//用来检查浏览页面的访问者在用什么操作系统
echo "<h3>用来检查浏览页面的访问者在用什么操作系统</h3>";
echo $_SERVER[&#39;HTTP_USER_AGENT&#39;];
echo "<hr/>";
//包含当前脚本的路径
echo "<h3>包含当前脚本的路径</h3>";
echo $_SERVER[&#39;SCRIPT_NAME&#39;];
?>

結果の出力


共有$_SERVER 変数のさらに重要な要素:

PHP スーパーグローバル変数を取得する方法 (整理および共有)

$_SERVER['PHP_SELF']
    ---現在実行中のスクリプトのファイル名。ドキュメントルートへ。
  • $_SERVER['GATEWAY_INTERFACE']
  • ---サーバーで使用される CGI 仕様のバージョン。
  • $_SERVER['SERVER_ADDR']---スクリプトが現在実行されているサーバーの IP アドレス。

  • $_SERVER['SERVER_NAME']---スクリプトが現在実行されているサーバーのホスト名。

  • $_SERVER['SERVER_SOFTWARE']---リクエストに応答するときにヘッダー情報で指定されるサーバー識別文字列。

  • $_SERVER['SERVER_PROTOCOL']---ページをリクエストするときの通信プロトコルの名前とバージョン。

  • $_SERVER['REQUEST_METHOD']---ページへのアクセスに使用されるリクエスト メソッド。

  • $_SERVER['REQUEST_TIME']---リクエストが開始されたときのタイムスタンプ。 PHP 5.1.0 以降で利用可能です。

  • $_SERVER['QUERY_STRING']---クエリ文字列 (クエリ文字列) がある場合は、それを使用してページにアクセスします。

  • $_SERVER['HTTP_ACCEPT']---現在のリクエスト ヘッダー内の Accept: 項目の内容 (存在する場合)。

  • $_SERVER['HTTP_ACCEPT_CHARSET']---現在のリクエスト ヘッダー内の Accept-Charset: 項目の内容 (存在する場合)。

  • $_SERVER['HTTP_HOST']---現在のリクエスト ヘッダー内の Host: 項目の内容 (存在する場合)。

  • $_SERVER['HTTP_REFERER']---ユーザー エージェントを現在のページの前のページのアドレスに誘導します (存在する場合)。

  • $_SERVER['HTTPS']---スクリプトが HTTPS プロトコルを通じてアクセスされる場合、空ではない値が設定されます。

  • $_SERVER['REMOTE_ADDR']---現在のページを閲覧しているユーザーの IP アドレス。

  • $_SERVER['REMOTE_HOST']---現在のページを閲覧しているユーザーのホスト名。 DNS 逆引き解決は、ユーザーの REMOTE_ADDR には依存しません。

  • $_SERVER['REMOTE_PORT']---Web サーバーに接続するためにユーザーのマシンで使用されるポート番号。

  • $_SERVER['SCRIPT_FILENAME']---現在実行中のスクリプトの絶対パス。

  • $_SERVER['SERVER_ADMIN']---この値は、Apache サーバー構成ファイルの SERVER_ADMIN パラメータを指定します。スクリプトが仮想ホスト上で実行されている場合、この値はその仮想ホストの値になります。

  • $_SERVER['SERVER_PORT']---Web サーバーによって使用されるポート。デフォルト値は「80」です。 SSL セキュア接続を使用する場合、この値はユーザーが設定した HTTP ポートです。

  • $_SERVER['SERVER_SIGNATURE']---サーバーのバージョンと仮想ホスト名を含む文字列。

  • $_SERVER['PATH_TRANSLATED']---現在のスクリプトが配置されているファイル システムのベース パス (ドキュメント ルート ディレクトリではありません)。これは、サーバーが仮想パスから実際のパスにイメージ化された後の結果です。

  • $_SERVER['SCRIPT_NAME']---現在のスクリプトのパスが含まれます。これは、ページがそれ自体を指す必要がある場合に便利です。 __FILE__ 定数には、現在のスクリプト (インクルード ファイルなど) の完全なパスとファイル名が含まれます。

  • $_SERVER['SCRIPT_URI']---URI は、アクセスするページを指定するために使用されます。たとえば、「/index.html」です。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHP スーパーグローバル変数を取得する方法 (整理および共有)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。