トップ > php > 

PHP変数リファレンス|参照(リファレンス)の挙動からグローバルスコープまで

PHP変数リファレンス|参照(リファレンス)の挙動からグローバルスコープまで

変数の参照渡しや可変変数の仕組み、$GLOBALSによるスコープ操作、環境変数$_ENVやエラーメッセージの取得など、システム開発に必要な変数知識を理解するための実践ガイドです。

変数 目次

  1. 変数
    1. 変数
    2. 変数の参照(リファレンス)
    3. GETメソッド($_GET)
    4. POSTメソッド($_POST)
    5. リクエスト($_REQUEST)
    6. セッション変数($_SESSION)
    7. Cookie($_COOKIE)
    8. ファイルアップロード($_FILES)
    9. サーバ情報($_SERVER)
    10. 環境変数($_ENV)
    11. グローバル変数($GLOBALS)
    12. コマンド引数($argc、$argv)
    13. エラーメッセージ($php_errormsg)
    14. 可変変数($$var)
  2. PHPの変数のスコープ
    1. グローバルスコープ

変数

変数

PHPの変数は $(ドル記号)の後に変数名が続く形式で表す。変数名は大文字小文字を区別する。

変数名には、アンダーバー(_)、数字(0~9)、文字(a~z、A~Z、日本語等)を使用できる。ただし、数字で始まる変数名は使用できない。

<?php
$var = 'hogehoge';
$Var = 'bonobono';
$class_id = 123;
$_class_id = 456;
$氏名 = 'hoge hoge太';
/* $123var = 123;	パースエラー(構文エラー) */

echo $var . '<br>';		/* hogehoge 表示 */
echo $Var . '<br>';		/* bonobono 表示 */
echo $class_id . '<br>';	/* 123 表示 */
echo $_class_id . '<br>';	/* 456 表示 */
echo $氏名 . '<br>';		/* hoge hoge太 表示 */
?>

変数の参照(リファレンス)

通常の変数 $a = $b は値のコピーだが、$a = &$b; とすると、$a と $b は同じメモリ領域を指し示すようになる(エイリアス、別名)。

下記の例では、$name に 'hogehoge' を代入し、$name2 = &$name; で $name2 は &$name の参照となり、$name2 を変更することで、その実態である $name の値を変更している。

<?php
$name = 'hogehoge';	/* $name2 に 'hogehoge' 代入 */
$name2 = &$name;	/* $name2 による $name の参照 */

$name2 = 'bonobono';	/* $name2 に 'bonobono' 代入 */

echo $name . '<br>';	/* bonobono 表示 */
echo $name2 . '<br>';	/* bonobono 表示 */
?>

GETメソッド($_GET)

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

<?php
/* http://www.example.com/test.php?name=hogehoge&page=3 にアクセスした場合、下記の変数と値が格納される */

echo $_GET['name'];	/* hogehoge が出力される */
echo $_GET['page'];	/* 3 が出力される */
?>

POSTメソッド($_POST)

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

<form method="POST" action="test.php">
	<input type="text" name="name" value="hogehoge">
	<input type="text" name="page" value="100">
	<input type="submit" value="OK">
</form>

下記の変数と値が格納される。

<?php
// $_POST['name'] には "hogehoge" が格納される
echo $_POST['name'];	/* hogehoge が出力される */

// htmlspecialchars はPHPでエスケープ(無害化)処理をするための関数
echo htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');

// $_POST['page'] には "100" が格納される(型はstring)
echo $_POST['page'];	/* 100 が出力される */

// (int) でキャストする
$page = (int)$_POST['page']; 
echo $page;
?>

リクエスト($_REQUEST)

$_REQUEST には、$_GET、$_POST の情報をマージした情報が格納される。※php.ini の variables_order に "GPC" と指定した場合は $_COOKIE の値も格納される。
<?php
<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
echo $_GET['key1'];	/* AAA が出力される */
echo $_GET['key2'];	/* BBB が出力される */
echo $_GET['key3'];	/* CCC が出力される */
echo $_GET['key4'];	/* DDD が出力される */
?>

セッション変数($_SESSION)

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

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

Cookie($_COOKIE)

$_COOKIE には、setCookie() で定義されたキーと値が格納される。

<?php
setCookie("hoge_cookie", "hogehoge");
echo $_COOKIE['hoge_cookie'];
?>

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

サーバ情報($_SERVER)

環境変数($_ENV)

グローバル変数($GLOBALS)

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

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

可変変数($$var)

PHPの変数のスコープ

グローバルスコープ

関数の外で定義された変数はあらゆる変数は、グローバルスコープになる。

グローバルスコープの変数を関数内で使用する場合は global 宣言を使用する。

<?php
$num = 1;	/* グローバルスコープで変数定義 */

function func() {
	global $num;	/* グローバルスコープの$numを呼び出し */
	echo $num;	/* 1が出力される */
}

func();		/* funcを呼び出し */
?>

おすすめ記事

10日で使えるPHP | 未経験のサルでも分かるPHPの学習サイト 10日で使えるPHP | 未経験のサルでも分かるPHPの学習サイト

文系未経験、サルでも10日でPHPを使えるように内容を構成した独学向け学習サイト。不要な基礎はバッサリ切り捨て必要な基礎を十分に深堀した・・・  続きを見る 

Copyright (C) 2001~2026年 e-elder.jp All Rights Reserved.
運営者情報 ご質問はこちらへお願いします info@e-elder.jp