PHPのリファレンス

リファレンス返し

 $num = 10;
 function &func1() {
     global $num;
     return $num;
 }
 $ref =& func1();
 $ref = $ref + 1;
 print $num; // => 11
  • 関数func1()の中で使いたいグローバル変数$numを見つけ、それをリファレンス変数$refに結びつける。
  • リファレンス変数を操作することで、グローバル変数の値を変えることできる。
 $num = 10;
 function &func1() {
     $num = $GLOBALS['num'];
     return $num;
 }
 $ref =& func1();
 $ref = $ref + 1;
 print $num; // => 10 注意:11ではない!
  • func1()が返すのは、リファレンスであること。
  • 値を返したら、意味をなさない。
 $num = 10;
 function &func1() {
     $num =& $GLOBALS['num'];
     return $num;
 }
 $ref =& func1();
 $ref = $ref + 1;
 print $num; // => 11

$GLOBALSを使う場合、=& で取り出す。

関数内でのグローバル変数の参照

PHPマニュアルより

global $var; は、$var =& $GLOBALS['var']; の短縮版だと考えてください。 これにより、他のリファレンスを $var に代入し、 ローカル変数のリファレンスのみを変更します。

 function func1($flg) {
     global $g1, $g2;
     if ($flg) {
         $g2 =& $g1;
     } else {
         $GLOBALS['g2'] =& $g1;
     }
 }
 
 $g1 = 1;
 $g2 = 2;
 func1(true);       // globalを使う
 print "$g1 $g2\n"; // => 1 2
 
 $g1 = 1;
 $g2 = 2;
 func1(false);      // $GLOBALS[]を使う
 print "$g1 $g2\n"; // => 1 1
 function func1($flg) {
     global $g1, $g2;
     if ($flg) {
         $g2 = $g1;
     } else {
         $GLOBALS['g2'] = $g1;
     }
 }
 
 $g1 = 1;
 $g2 = 2;
 func1(true);       // globalを使う
 print "$g1 $g2\n"; // => 1 1
 
 $g1 = 1;
 $g2 = 2;
 func1(false);      // $GLOBALS[]を使う
 print "$g1 $g2\n"; // => 1 1

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2006-05-12 (金) 14:29:32