PHP の変数はドル記号の後に変数名が続く形式で表されます。
変数名は大文字小文字を区別します。
変数名は、PHPの他のラベルと同じルールに従います。
有効な変数名は文字またはアンダースコアから始まり、任意の数の文字、
数字、アンダースコアが続きます。正規表現によれば、これは次の ように表現することができます。
'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'
注意 ここで言うところの文字とはa-z、A-Z、127から255まで (0x7f-0xff)のアスキー文字を意味します。
$var = "Bob"; $Var = "Joe"; echo "$var, $Var"; // "Bob, Joe"を出力します。 $4site = 'not yet'; // 無効:数字で始まっている。 $_4site = 'not yet'; // 有効:アンダースコアで始まっている。 $täyte = 'mansikka'; // 有効:'ä' はアスキーコード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 $foo; // $fooも変更される。 echo $bar; ? |
注意すべき重要な点として、名前のある変数のみが参照により代入できる
ということがあります。
?php $foo = 25; $bar = $foo; // これは有効な代入です。 $bar = (24 * 7); // 無効です。名前のない式を参照しています。 function test() { return 25; } $bar = test(); // 無効。 ? |