PHP入門 - 変数

トップ > PHP入門 > 変数

変数($xxx)

PHP ではすべての変数はドルマーク($)+変数名で現します。変数名には、アンダーバー(_)、数字(0~9)、文字(a~z, A~Z, 日本語等)を使用できます。ただし、数字で始まる変数名は使用できません。

PHP
<?php
$var = "Hello";
$Foo = "World";
$line_count = 123;
$名前 = "田中";             // 日本語も使用可能
# $365days = "";           // 先頭が数字なので使用できない

変数の参照(&$xxx)

アンパサンド(&)を用いて変数の参照を表すことができます。下記の例では、$bar は $foo 変数への参照となり、$bar を変更することで、その実体である $foo の値を変更することが可能となります。

PHP
<?php
$foo = "AAA";           // 変数 $foo に "AAA" を代入する
$bar = &$foo;           // 変数 $foo への参照を $bar に代入する
$bar = "BBB";           // $bar を変更する (実体である $foo も変更される)
echo "$foo\n";          // BBB が出力される
echo "$bar\n";          // BBB が出力される

関数の引数でも参照を用いることができます。詳細は「値の参照渡し」を参照してください。

サーバ情報($_SERVER)

$_SERVER には、HTTPサーバやHTTP通信に関わる情報が格納されます。

PHP
$_SERVER['SERVER_ADDR']           サーバのIPアドレス(例:192.168.0.1)
$_SERVER['SERVER_NAME']           サーバの名前(例:www.example.com)
$_SERVER['SERVER_PORT']           サーバのポート番号(例:80)
$_SERVER['SERVER_PROTOCOL']       サーバプロトコル(例:HTTP/1.1)
$_SERVER['SERVER_ADMIN']          サーバの管理者(例:root@localhost)
$_SERVER['SERVER_SIGNATURE']      サーバのシグニチャ(例:Apache/2.2.15...)
$_SERVER['SERVER_SOFTWARE']       サーバソフトウェア(例:Apache/2.2.15...)
$_SERVER['GATEWAY_INTERFACE']     CGIバージョン(例:CGI/1.1)
$_SERVER['DOCUMENT_ROOT']         ドキュメントルート(例:/var/www/html)
$_SERVER['PATH']                  環境変数PATHの値(例:/sbin:/usr/sbin:/bin:/usr/bin)
$_SERVER['PATH_TRANSLATED']       スクリプトファイル名(例:/var/www/html/test.php)
$_SERVER['SCRIPT_FILENAME']       スクリプトファイル名(例:/var/www/html/test.php)
$_SERVER['REQUEST_URI']           リクエストのURI(例:/test.php)
$_SERVER['PHP_SELF']              PHPスクリプト名(例:/test.php)
$_SERVER['SCRIPT_NAME']           スクリプト名(例:/test.php)
$_SERVER['PATH_INFO']             URLの引数に指定されたパス名(例:/test.php/aaa)
$_SERVER['ORIG_PATH_INFO']        PHPで処理される前のPATH_INFO情報
$_SERVER['QUERY_STRING']          URLの?以降に記述された引数(例:q=123)
$_SERVER['REMOTE_ADDR']           クライアントのIPアドレス(例:192.168.0.123)
$_SERVER['REMOTE_HOST']           クライアント名(例:client32.example.com)
$_SERVER['REMOTE_PORT']           クライアントのポート番号(例:64799)
$_SERVER['REMOTE_USER']           クライアントのユーザ名(例:tanaka)
$_SERVER['REQUEST_METHOD']        リクエストメソッド(例:GET)
$_SERVER['REQUEST_TIME']          リクエストのタイムスタンプ(例:1351987425)
$_SERVER['REQUEST_TIME_FLOAT']    リクエストのタイムスタンプ(マイクロ秒)(PHP 5.1.0以降)
$_SERVER['REDIRECT_REMOTE_USER']  リダイレクトされた場合の認証ユーザ(例:tanaka)
$_SERVER['HTTP_ACCEPT']           リクエストのAccept:ヘッダの値(例:text/html)
$_SERVER['HTTP_ACCEPT_CHARSET']   リクエストのAccept-Charset:ヘッダの値(例:utf-8)
$_SERVER['HTTP_ACCEPT_ENCODING']  リクエストのAccept-Encoding:ヘッダの値(例:gzip)
$_SERVER['HTTP_ACCEPT_LANGUAGE']  リクエストのAccept-Language:ヘッダの値(ja,en-US)
$_SERVER['HTTP_CACHE_CONTROL']    リクエストのCache-Control:ヘッダの値(例:max-age=0)
$_SERVER['HTTP_CONNECTION']       リクエストのConnection:ヘッダの値(例:keep-alive)
$_SERVER['HTTP_HOST']             リクエストのHost:ヘッダの値(例:www.example.com)
$_SERVER['HTTP_REFERER']          リンクの参照元URL(例:http://www.example.com/)
$_SERVER['HTTP_USER_AGENT']       リクエストのUser-Agent:ヘッダの値(例:Mozilla/5.0...)
$_SERVER['HTTPS']                 HTTPSを利用しているか否か(例:on)
$_SERVER['PHP_AUTH_DIGEST']       ダイジェスト認証時のAuthorization:ヘッダの値
$_SERVER['PHP_AUTH_USER']         HTTP認証時のユーザ名
$_SERVER['PHP_AUTH_PW']           HTTP認証時のパスワード
$_SERVER['AUTH_TYPE']             HTTP認証時の認証形式

GETメソッド情報($_GET)

$_GET には、HTTPのGETメソッドで渡される引数が格納されます。例えば、http://www.example.com/test.php?key=ABC&page=3 にアクセスした場合、下記の変数が格納されます。

PHP
<?php
echo $_GET['key'];   // ABC が出力される
echo $_GET['page'];  // 3 が出力される

POSTメソッド情報($_POST)

$_POST には、HTTPのPOSTメソッドで渡される引数が格納されます。例えば、下記のようなフォームからデータが送信されたとします。

HTML
<form method="POST" action="test.php">
  <input type="text" name="key" value="ABC">
  <input type="text" name="page" value="3">
  <input type="submit" value="OK">
</form>

PHPでは、下記の変数を参照することができます。

PHP
<?php
echo $_POST['key'];   // ABC が出力される
echo $_POST['page'];  // 3 が出力される

$_COOKIE には、Cookieの値が格納されます。

PHP
<?php
setCookie("mycookie", "mydata");
echo $_COOKIE['mycookie'];

リクエスト情報($_REQUEST)

$_REQUEST には、$_GET、$_POST の情報をマージした情報が格納されます。php.ini の variables_order に "GPC" と指定した場合は $_COOKIE の値も格納されます。

HTML
<form method="POST" action="test.php?key1=AAA&key2=BBB">
  <input type="text" name="key3" value="CCC">
  <input type="text" name="key4" value="DDD">
  <input type="submit" value="OK">
</form>

PHPでは、下記の変数を参照することができます。

PHP
<?php
echo $_REQUEST['key1'];   // AAA が出力される
echo $_REQUEST['key2'];   // BBB が出力される
echo $_REQUEST['key3'];   // CCC が出力される
echo $_REQUEST['key4'];   // DDD が出力される

ファイルアップロード($_FILES)

$_FILES には、フォームからアップロードしたファイルに関する情報が格納されます。

HTML
<form method="POST" enctype="multipart/form-data" action="test.php">
  <input type="file" name="myfile">
  <input type="submit" value="OK">
</form>

上記のフォームからアップロードした場合、$_FILES には下記の値が格納されます。

PHP
<?php
echo $_FILES['myfile']['name'];      // クライアント側ファイル名(例:test.jpg)
echo $_FILES['myfile']['tmp_name'];  // サーバ側ファイル名(例:/tmp/phpAnBAQe)
echo $_FILES['myfile']['type'];      // ファイルタイプ(例:image/jpeg)
echo $_FILES['myfile']['size'];      // ファイルサイズ(例:12345)
echo $_FILES['myfile']['error'];     // エラー番号(例:0)

環境変数($_ENV)

$_ENV には、環境変数の値が格納されます。

PHP
<?php
echo $_ENV['PATH'];    // 環境変数 PATH の値が出力される

セッション変数($_SESSION)

$_SESSION には、セッション情報が格納されます。下記の例では、ページを再表示する度に、セッション変数に格納されたカウンター(counter)がインクリメント(加算)されながら表示されます。

PHP
<?php
session_start();
if ($_SESSION['counter']) {
    $_SESSION['counter']++;
} else {
    $_SESSION['counter'] = 1;
}
echo $_SESSION['counter'];

グローバル変数($GLOBALS)

$GLOBALS には、グローバル変数の連想配列が格納されます。例えば、グローバル変数 $foo が存在する時、$GLOBALS['foo'] で $foo の値を参照することができます。

PHP
<?php
var_dump($GLOBALS);

コマンド引数($argc, $argv)

$argc, $argv には、PHPスクリプトをコマンドラインから実行した際の、コマンド引数の個数、および引数の配列が格納されます。

PHP
<?php
echo "Number of args: $argc\n";
foreach ($argv as $arg) {
    echo "$arg\n";
}

エラーメッセージ($php_errormsg)

$php_errormsg には、直近のエラーメッセージが格納されます。php.ini で track_errors が On になっている場合のみ有効(デフォルトは Off)です。

PHP
<?php
ini_set('track_errors', 1);

@strpos();
echo $php_errormsg;       // 例: strpos() expects at least 2 parameters, 0 given

可変変数($$xxx)

変数名を変数で表現することも可能です。$name が "var1" の時 $$name は $var1 を、$name が "var2" の時 $$name は $var2 と等価になります。

PHP
<?php
$var1 = "AAA";
$var2 = "BBB";

$name = "var1";
echo $$name;    // AAA が出力される

$name = "var2";
echo $$name;    // BBB が出力される

Copyright(C) 2013 杜甫々
初版:2013年5月12日、最終更新:2013年5月12日
http://www.tohoho-web.com/php/variables.html