章 7. 変数

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

基本的な事

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

  1  
  2 $var = "Bob";
  3 $Var = "Joe";
  4 echo "$var, $Var"; // "Bob, Joe" を出力します。
  5 	

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

PHP4 は変数に値の代入を行う別の方法を提供します。それは、 参照による代入 です。 この場合、新規の変数は元の変数を参照するだけです。 (言いかえると、元の変数の"エイリアスを作る"または元の変数を"指す") 新規の変数への代入は、元の変数に影響し、その逆も同様となります。 この手法ではコピーは行われないため、代入はより速やかに行われます。 しかし、速度の向上が体感できるのは、重いループや大きな配列または オブジェクトを割り付ける場合に限られるものと思われます。

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

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

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

  1 
  2 <?php
  3 $foo = 25;
  4 $bar = &$foo;      // これは有効な代入です。
  5 $bar = &(24 * 7);  // 無効です。名前のない式を参照しています。
  6 
  7 function test() {
  8    return 25;
  9 }
 10 
 11 $bar = &test();    // 無効。
 12 ?>
 13