Posted at

リファレンス渡し

More than 3 years have passed since last update.

コールする関数に、コール元の変数のリファレンスを渡す事も出来ます。以下に、その方法を示したサンプルと結果を。

<?php

function func(&$ref){
echo $ref."<br />";
$ref = "HODENASU!!";
}

$var = "NDA!";

func($var);

echo $var;
?>

結果

NDA!

HODENASU!!

関数「func()」は、関数内の変数(要するにローカル変数)「\$ref」に「"HODENASU!!"」を(無意味に)代入してるようにも見えますが、仮引数の部分が「&\$ref」となっています。この場合、関数内のローカル変数「\$ref」には、実引数に指定した変数へのリファレンスが自動的にセットされます。

よって、関数内のローカル変数「$ref」は引数に指定した変数「$var」へのリファレンスを持つことになり、「関数のローカル変数$ref」へ代入した値は「変数$var」でも参照できるようになります。

当然、この場合の関数が想定する実引数は変数へのリファレンスであるので、引数に変数以外のものを指定するとエラーになります。

参考:http://www.shigeweb.jp/php/project_p/?section=first&page=var2