変数の参照渡しや可変変数の仕組み、$GLOBALSによるスコープ操作、環境変数$_ENVやエラーメッセージの取得など、システム開発に必要な変数知識を理解するための実践ガイドです。
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 には、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 には、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;
?><?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 には、セッション情報が格納される。下記の例では、ページを再表示する度に、セッション変数に格納されたカウンター(cnt)がインクリメント(加算)されながら表示されます。
<?php
session_start();
if ($_SESSION['cnt']) {
$_SESSION['cnt']++;
} else {
$_SESSION['cnt'] = 1;
}
echo $_SESSION['cnt'];
?>$_COOKIE には、setCookie() で定義されたキーと値が格納される。
<?php
setCookie("hoge_cookie", "hogehoge");
echo $_COOKIE['hoge_cookie'];
?>関数の外で定義された変数はあらゆる変数は、グローバルスコープになる。
グローバルスコープの変数を関数内で使用する場合は global 宣言を使用する。
<?php
$num = 1; /* グローバルスコープで変数定義 */
function func() {
global $num; /* グローバルスコープの$numを呼び出し */
echo $num; /* 1が出力される */
}
func(); /* funcを呼び出し */
?>![]() | 10日で使えるPHP | 未経験のサルでも分かるPHPの学習サイト 文系未経験、サルでも10日でPHPを使えるように内容を構成した独学向け学習サイト。不要な基礎はバッサリ切り捨て必要な基礎を十分に深堀した・・・ 続きを見る |