第 12章変数

目次
基本的な事
定義済みの変数
変数のスコープ
可変変数
PHPの外部から来る変数

基本的な事

PHP の変数はドル記号の後に変数名が続く形式で表されます。 変数名は大文字小文字を区別します。

変数名は、PHPの他のラベルと同じルールに従います。 有効な変数名は文字またはアンダースコアから始まり、任意の数の文字、 数字、アンダースコアが続きます。正規表現によれば、これは次の ように表現することができます。 '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

注意: ここで言うところの文字とはa-z、A-Z、127から255まで (0x7f-0xff)のアスキー文字を意味します。

ティップ: 付録T もご覧になるとよいでしょう。

変数関連の関数に関する情報については、 変数関数リファレンス を参照ください。

$var = 'Bob';
$Var = 'Joe';
echo "$var, $Var";      // "Bob, Joe"を出力します。

$4site = 'not yet';     // 無効:数字で始まっている。
$_4site = 'not yet';    // 有効:アンダースコアで始まっている。
$tayte = 'mansikka';    // 有効:'a' はアスキーコード228です。

PHP 3では、変数は常にその値により代入されていました。 これは、つまり、ある変数にある式を代入する際、元の式の 値全体がコピーされる側の変数にコピーされるということです。 これは、例えば、ある変数の値を他の変数に代入した後で、 これらの変数の1つを変更しても他の変数には影響を与えないという ことを意味します。この種の代入に関するより詳細な情報については、 を参照ください。

PHP 4以降では、変数に値の代入を行う別の方法を提供します。それは、 参照による代入 です。 この場合、新規の変数は元の変数を参照するだけです。 (言いかえると、元の変数の"エイリアスを作る"または元の変数を"指す") 新規の変数への代入は、元の変数に影響し、その逆も同様となります。

参照により代入を行うには、代入する変数(ソース変数)の先頭に アンパサンドを加えます。たとえば、次の簡単なコードは 'My name is Bob'を二度出力します。

<?php
$foo
= 'Bob';              // 値'Bob'を$fooに代入する。
$bar = &$foo;              // $fooを$barにより参照
$bar = "My name is $bar";  // $barを変更...
echo $bar;
echo
$foo;                 // $fooも変更される。
?>

注意すべき重要な点として、名前のある変数のみが参照により代入できる ということがあります。

<?php
$foo
= 25;
$bar = &$foo;      // これは有効な代入です。
$bar = &(24 * 7);  // 無効です。名前のない式を参照しています。

function test() {
   return
25;
}

$bar = &test();    // 無効。
?>

PHP では変数を初期化する必要はありませんが、そのようにするのはとても よいことです。初期化されていない変数の値は、その型のデフォルト値 - FALSE、ゼロ、空の文字列あるいは空の配列となります。

例 12-1. 初期化されていない変数のデフォルト値

<?php
echo ($unset_bool ? "true" : "false"); // false
$unset_int += 25; // 0 + 25 => 25
echo $unset_string . "abc"; // "" . "abc" => "abc"
$unset_array[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
?>

初期化されていない変数のデフォルト値に依存すると、そのファイルを include している別のファイルで同名の変数が使用されていた場合などに 問題を起こします。また、register_globals が on の場合には重大なセキュリティリスク を抱えることになります。初期化されていない変数を使用すると、 E_NOTICE レベルのエラーが発生します。 しかし、初期化されていない配列に要素を追加する場合はエラーにはなりません。 変数が初期化されているかどうかの判断には、isset() を使用します。



東京デリヘル 池袋デリヘル 新宿デリヘル 渋谷デリヘル 品川デリヘル

鶯谷デリヘル 大塚デリヘル 立川デリヘル 町田デリヘル 横浜デリヘル 埼玉デリヘル

千葉デリヘル 大阪デリヘル 神戸デリヘル 京都デリヘル 名古屋デリヘル デリヘル

アダルトレンタルサーバー アダルトレンタルサーバー 表札 断熱塗料 UGUISU

大阪 老人ホーム 京都 老人ホーム 兵庫 老人ホーム 和歌山 老人ホーム 滋賀 老人ホーム

奈良 老人ホーム 東京 老人ホーム 神奈川 老人ホーム 千葉 老人ホーム 埼玉 老人ホーム 老人ホーム