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

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 (4363d)