通常、関数への引数は値を直接渡すため関数内で引数の値を変更しても、その後、関数の外では値に変化はありません。
しかし、関数に引数を渡す時、&$引数名 というふうに & をつけて渡すと関数内で引数の値を変更すると関数外でもその変更が反映されます。
ソースコード
function func1 ($arg1) {
$arg1 = $arg1 * 2;
}
function func2 (&$arg1) {
$arg1 = $arg1 * 2;
}
$i = 10;
func1($i);
print "func1の後の \$i の値は" . $i . "です。<br>\n";
func2($i);
print "func2の後の \$i の値は" . $i . "です。<br>\n";
出力結果
func1の後の $i の値は10です。
func2の後の $i の値は20です。
func1 では関数内で引数の値が2倍になっていますが関数の後は変数 $i の値は変化なく「10」のままです。
func2 では引数に & をつけているので参照渡しとなり、関数内で値が2倍になると関数の後で $i の値は「20」となります。
|