PHPで引数を参照渡しする方法をわかりやすく解説
PHPでは、関数のパラメータ名の前に & を付けることで、引数を参照渡し(リファレンス渡し)することができます。通常の値渡しでは関数内での変更が呼び出し元に反映されませんが、参照渡しを使えば、関数の中で行った変更が元の変数にも直接反映されます。
基本構文
function 関数名(&$変数) {
// 処理
}サンプルコード
以下は、参照渡しを使って変数の値を書き換える具体的な例です。
<!DOCTYPE html>
<html>
<body>
<?php
function referenceDemo(&$number){
$number = $number + 100;
return $number;
}
$number = 900;
echo "元の値は=", $number, "<br>";
$result = referenceDemo($number);
echo "変更後の値は=", $result;
?>
</body>
</html>
実行結果
このコードを実行すると、次のような出力が得られます。
元の値は=900
変更後の値は=1000
解説
この例では、referenceDemo() 関数のパラメータに &$number と指定することで参照渡しを行っています。そのため、関数内で $number に 100 を加算すると、呼び出し元の $number の値も同時に更新されます。
もし & を付けずに普通に値渡しをした場合、関数内での加算処理は関数内のコピーに対してのみ適用され、元の変数 $number は 900 のまま変化しません。この違いを理解しておくと、意図した動作を実装しやすくなります。
-
Pythonの関数は引数を参照渡しする?id()による検証方法を解説
Pythonの関数における引数の受け渡しの仕組みPythonでは、関数の引数は常に参照渡し(正確には「オブジェクトへの参照を受け渡す」方式)で行われます。つまり、関数に渡されるのはオブジェクトそのものではなく、そのオブジェクトへの参照です。この挙動は、実際の引数・仮引数・戻り値の各オブジェクトに対してid()を確認することで簡単に検証できます。検証用サンプルコードdef foo(x): print (id of received argument,id(x)) x.append(20) return x a = [10] print (id of a
-
Python関数の引数渡しの仕組みを解説!値渡しに見える理由とは
Pythonでは、関数に引数を渡すとき、その動作が「値渡し(pass by value)」なのか「参照渡し(pass by reference)」なのか迷うことがあります。結論から言うと、Pythonの引数渡しは「オブジェクトへの参照渡し(pass by object reference)」です。ただし、オブジェクトの種類によって挙動が異なるため、「値渡しのように見える」ケースがあります。 サンプルコードの出力結果 b = 30 a = [10] この出力を見ると、変数aの値は関数呼び出し後も変わっていないように見えます。そのため「Pythonの引数は値渡しだ」と結論づけたくなりますが、実