変数を参照
前のページで変数は変数毎に値を格納するための領域を持つことを説明しました。PHPではこのような変数の使い方の他に、他の変数への参照を設定することも可能です。
他の変数への参照を設定するには次のように記述します。
変数 =& 他の変数
「=」の代わりに「=&」を使うことで、右辺の変数の値をコピーするのではなく、右辺の変数のエイリアスとして左辺の変数を設定します。この結果、右辺の変数が格納された値に左辺の変数名でもアクセスできるようになります。
$num1 = 320; $num2 =& $num1;
この場合、変数「num1」と変数「num2」の値はどちらも「320」となっています。
では変数「num1」に別の値を格納してみます。
$num1 = 320; $num2 =& $num1; $num1 = 45;
変数「num1」と変数「num2」は同じ値に対する別名の関係のため、変数「num1」の値をあとから変更した場合は変数「num2」が格納している値も同じように変更されます。あくまで1つの格納領域に2つの変数名が付いているだけのためです。
では簡単なプログラムで試して見ます。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPテスト</title> </head> <body> <p>PHPのテストです。</p> <p> <?php $num1 = 320; $num2 =& $num1; print '$num1 ='.$num1.'<br />'; print '$num2 ='.$num2.'<br />'; $num1 = 18; print '$num1 ='.$num1.'<br />'; print '$num2 ='.$num2.'<br />'; $num2 = 75; print '$num1 ='.$num1.'<br />'; print '$num2 ='.$num2; ?> </p> </body> </html>
上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。
2つの変数は片方の変数への参照となっているため、どちらかの変数に別の値を格納すると、もう片方が格納している値にも反映されます。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。