这就是我想做的:
$var = "foo";
$unknown = "";
function do($arg1, $arg2) {
$arg2 = "bar";
magic($arg2);
}
do($var, $unknown);
echo $unknown;
这应该返回:bar
我知道,如果我像这样定义我的函数,这是可以工作的:
function do($arg1, $unknown) {
global $unknown;
$unknown = "bar";
}
你可能已经猜到了,$unknown的变量名是未知的。
我需要这个,因为我正在使用apd写一个PHP沙箱。我想在PHP脚本中替换exec($cmd, $ret),我不知道自己的函数。
如果未知的PHP脚本是这样的:
$foo = "";
exec('whois google.com', $foo);
echo $foo;
我将有一个问题,用我自己的函数do()代替exec模拟相同的功能。
您希望通过引用传递参数:
$var = "foo";
$unknown = "";
function foo($arg1, &$arg2) { // NOTE EXTRA "&"
$arg2 = "bar";
}
foo($var, $unknown);
echo $unknown;
查看效果