这就是我想要做的事情:
$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时遇到问题。
答案 0 :(得分:1)
您想要pass the parameter by reference:
$var = "foo";
$unknown = "";
function foo($arg1, &$arg2) { // NOTE EXTRA "&"
$arg2 = "bar";
}
foo($var, $unknown);
echo $unknown;
<强> See it in action 强>