Web制作メモ -トップへ-

[PHP] リファレンス渡しとは

PHP2014.12.09 07:52

関数に変数を渡して関数内で書き換えれるようにする方法をリファレンス渡しといいます。C言語でいうポインタ(参照)です。

通常、関数に渡す引数は値がコピーされて渡されますが、値ではなく変数のアドレスを渡すことで変数の内容の書き換えができるというものです。

リファレンスという言い方に馴染みがなかったのでリファレンスについて調べてみました。リファレンス(reference)とは、言及とか参考(参照)という意味だそうです。

馴染みのある使い方には「リファレンスマニュアル」があります。リファレンスマニュアルとは、簡易マニュアル(クイックガイド)と違い機能を詳細に解説したマニュアルのことです。この場合のリファレンスは「言及」というニュアンスで使用されています。リファレンス渡しのリファレンスはリファレンスマニュアルとは違い「参考」のニュアンスが強い使い方のようです。

リファレンス渡しは関数定義でアンパサンド(&)を使って指定します。関数に対して「この関数は参照で変数を受け取ります」と指定するわけです。アンパサンドを付けるのは関数定義だけで、関数呼び出しの際にはアンパサンドは不要です。

リファレンス渡しの記述例

function hello(&$msg) {
  $msg = "こんにちは";
}

$msg = "初期値";

hello($msg);

echo $msg; //こんにちはと表示