* PHPのリファレンス [#c3286b2b]
**リファレンス返し [#w7213df8]

 $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
 print $num; // => 10 注意:11ではない!

-func1()が返すのは、リファレンスであること。
-値を返したら、意味をなさない。

 $num = 10;
 function &func1() {
     $num =& $GLOBALS['num'];
     return $num;
 }
 $ref =& func1();
 $ref = $ref + 1;
 print $num; // => 11
$GLOBALSを使う場合、=& で取り出す。

**  関数内でのグローバル変数の参照 [#n7b26dde]
[[PHPマニュアル>http://www.php.net/manual/ja/language.references.whatdo.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