2011-09-16 20 views
1

これは私が何をしたいです:未知の引数名で関数を置き換えるには?

$var = "foo"; 
$unknown = ""; 
function do($arg1, $arg2) { 
    $arg2 = "bar"; 
    magic($arg2); 
    } 
do($var, $unknown); 
echo $unknown; 

これは返す必要があります:バー

私はこのように私の関数を定義したい場合は、これがうまくいくことを知っている:

function do($arg1, $unknown) { 
    global $unknown; 
    $unknown = "bar"; 
} 

として、 $ unknownの変数名は不明です。

私はapdを使用してPHPサンドボックスを作成しているので、これが必要です。私は自分の関数で知らないPHPスクリプトでexec($ cmd、$ ret)を置き換えたいと思います。

不明なPHPスクリプトは次のようになりますのであれば:

$foo = ""; 
exec('whois google.com', $foo); 
echo $foo; 

私は(私自身の機能でのexecを交換し、問題が行う必要があります)と同じ機能をエミュレートします。

答えて

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

+0

いいね!しかし、それはfoo($ var、$ unknown);取得が含まれています。私はこのように私のサンドボックスを実行しています:php sandbox.php unknown.phpとsandbox.phpにはinclude $ argv [1];最後に。提案? – Glaslos

+0

@Peter:コードを表示します。 – Jon

+0

http://www.ideone.com/Xsnwy – Glaslos

関連する問題