[PHP-users 12273] 可変長引数の参照渡し
Kazunori Ito
php-users@php.gr.jp
Thu, 19 Dec 2002 13:31:24 +0900
伊藤です。
通常、関数の引数を参照渡しする場合には、
//////////////////////////////////////////
function func(&$str)
{
$str = "abc"
}
//////////////////////////////////////////
というふうに、関数の引数に(&)をつけると思うのですが、
関数の引数を可変長にした場合にはどのようにすれば
参照渡しができるのでしょうか?
リファレンス(&)について調べたところ、ポインタではなく
同じ変数を指す、エイリアスである、ということはわかったので、
//////////////////////////////////////////
function func()
{
$str = &func_get_arg(0);
$str = "abc"
}
//////////////////////////////////////////
というふうにやってみたのですが、参照渡しになりません。
func_get_arg自体がコピーされた値を返していれば、
この方法でも当然無理だとは思うのですが。。。
可変長引数の参照渡しについて、知っている方がおられましたら
ご教授願います。
以下、試したソースです。
//////////////////////////////////////////
function RefArgA(&$str)
{
$str = "abc";
}
function RefArgB()
{
$str =& func_get_arg(0);
$str = "def";
}
function RefArgC()
{
$str = func_get_arg(0);
$str = "ghi";
}
RefArgA($a);
print("RefArgA:" . $a . "<BR>");
RefArgB($b);
print("RefArgB:" . $b . "<BR>");
RefArgC(&$c);
print("RefArgC:" . $c . "<BR>");
//////////////////////////////////////////
<結果>
RefArgA:abc
RefArgB:
RefArgC:
環境は以下のとおりです。
RedHatLinux7.2
apache 1.3.26
php 4.2.2