戻る

変数の値渡しと参照渡し

「値渡し」は、変数の値のみを渡し、渡された式や関数などの中で値を変更しても、呼び出し元の変数の内容が変わりませんが、「参照渡し」は、渡された式や関数などの中で値を変更すると、元の変数も同じように変更されます。

言語やデータ型によって、変数が「値渡し」されるか、「参照渡し」されるか違ってきます。PHPの場合は以下に示すように変数$bに変数$aを代入するとき、$aに「&」をつけると参照渡しされます。

一度、参照渡しされた変数$aは、unset($a)のようにunset関数で解除されるまで参照渡しされ続けます。NULLを代入しても、参照渡しは解除されません。

値渡し

<?php
header("Content-type: text/plain; charset=utf-8");

$a = 10;
$b = $a;

var_dump($b);

$a = 10.5;

var_dump($b);
?>

int(10)
int(10)

参照渡し

<?php
header("Content-type: text/plain; charset=utf-8");

$a = 10;
$b = &$a;

var_dump($b);

$a = 10.5;

var_dump($b);
?>

int(10)
float(10.5)

inserted by FC2 system