PHP ではすべての変数はドルマーク($)+変数名で現します。変数名には、アンダーバー(_)、数字(0~9)、文字(a~z, A~Z, 日本語等)を使用できます。ただし、数字で始まる変数名は使用できません。
<?php $var = "Hello"; $Foo = "World"; $line_count = 123; $名前 = "田中"; // 日本語も使用可能 # $365days = ""; // 先頭が数字なので使用できない
アンパサンド(&)を用いて変数の参照を表すことができます。下記の例では、$bar は $foo 変数への参照となり、$bar を変更することで、その実体である $foo の値を変更することが可能となります。
<?php $foo = "AAA"; // 変数 $foo に "AAA" を代入する $bar = &$foo; // 変数 $foo への参照を $bar に代入する $bar = "BBB"; // $bar を変更する (実体である $foo も変更される) echo "$foo\n"; // BBB が出力される echo "$bar\n"; // BBB が出力される
関数の引数でも参照を用いることができます。詳細は「値の参照渡し」を参照してください。
$_SERVER には、HTTPサーバやHTTP通信に関わる情報が格納されます。
$_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 には、HTTPのGETメソッドで渡される引数が格納されます。例えば、http://www.example.com/test.php?key=ABC&page=3 にアクセスした場合、下記の変数が格納されます。
<?php echo $_GET['key']; // ABC が出力される echo $_GET['page']; // 3 が出力される
$_POST には、HTTPのPOSTメソッドで渡される引数が格納されます。例えば、下記のようなフォームからデータが送信されたとします。
<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 echo $_POST['key']; // ABC が出力される echo $_POST['page']; // 3 が出力される
$_COOKIE には、Cookieの値が格納されます。
<?php setCookie("mycookie", "mydata"); echo $_COOKIE['mycookie'];
$_REQUEST には、$_GET、$_POST の情報をマージした情報が格納されます。php.ini の variables_order に "GPC" と指定した場合は $_COOKIE の値も格納されます。
<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 echo $_REQUEST['key1']; // AAA が出力される echo $_REQUEST['key2']; // BBB が出力される echo $_REQUEST['key3']; // CCC が出力される echo $_REQUEST['key4']; // DDD が出力される
$_FILES には、フォームからアップロードしたファイルに関する情報が格納されます。
<form method="POST" enctype="multipart/form-data" action="test.php"> <input type="file" name="myfile"> <input type="submit" value="OK"> </form>
上記のフォームからアップロードした場合、$_FILES には下記の値が格納されます。
<?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 には、環境変数の値が格納されます。
<?php echo $_ENV['PATH']; // 環境変数 PATH の値が出力される
$_SESSION には、セッション情報が格納されます。下記の例では、ページを再表示する度に、セッション変数に格納されたカウンター(counter)がインクリメント(加算)されながら表示されます。
<?php session_start(); if ($_SESSION['counter']) { $_SESSION['counter']++; } else { $_SESSION['counter'] = 1; } echo $_SESSION['counter'];
$GLOBALS には、グローバル変数の連想配列が格納されます。例えば、グローバル変数 $foo が存在する時、$GLOBALS['foo'] で $foo の値を参照することができます。
<?php var_dump($GLOBALS);
$argc, $argv には、PHPスクリプトをコマンドラインから実行した際の、コマンド引数の個数、および引数の配列が格納されます。
<?php echo "Number of args: $argc\n"; foreach ($argv as $arg) { echo "$arg\n"; }
$php_errormsg には、直近のエラーメッセージが格納されます。php.ini で track_errors が On になっている場合のみ有効(デフォルトは Off)です。
<?php ini_set('track_errors', 1); @strpos(); echo $php_errormsg; // 例: strpos() expects at least 2 parameters, 0 given
変数名を変数で表現することも可能です。$name が "var1" の時 $$name は $var1 を、$name が "var2" の時 $$name は $var2 と等価になります。
<?php $var1 = "AAA"; $var2 = "BBB"; $name = "var1"; echo $$name; // AAA が出力される $name = "var2"; echo $$name; // BBB が出力される