2016-03-24 8 views
0

これは何を呼び出すのかわかりません。私はこのPHP - 実行時に関数を選択する

// Elsewhere 
function A($arg){ 
    echo "Hi" . $arg; 
} 
function B($arg){ 
    echo "Bye" . $arg; 
} 

for($i=0;$i<2;$i++) 
{ 
    $FunctionUse = $i==0 ? A : B; 
    $FunctionUse("Rewind"); 
} 

をやりたい

はこれを行うことができますか?

答えて

1

はい、call_user_funcを使用。また

、あなたが文字列であることをABを変更する場合は、また、このリンクにVariable functions

をチェックしてください、あなたのコードは次のように、あまりにも動作します:ここで

$FunctionUse = $i==0 ? 'A' : 'B'; 
+0

$ FunctionUse = $ i == 0の回答としてマークされていますか? 'A': 'B'; – Rewind

-1

使用call_user_func:

// Elsewhere 
function A($arg){ 
    echo "Hi" . $arg; 
} 
function B($arg){ 
    echo "Bye" . $arg; 
} 

for($i=0;$i<2;$i++) 
{ 
    $FunctionUse = $i==0 ? 'A' : 'B'; 
    call_user_func($FunctionUse, "Rewind"); 
} 
0

が短いです簡単な解答:

$a = function ($arg){ 
    echo "Hi" . $arg; 
} 

$b = function ($arg){ 
    echo "Bye" . $arg; 
} 

for($i=0;$i<2;$i++){ 
    $FunctionUse = $i==0 ? $a : $b; 
    $FunctionUse("Rewind"); 
} 

関数に可変スコープがあることに注意してください。それはif文を使用する方が簡単です、

global $a, $b; 

しかし、あなたが提示するケースを解決するために:あなたは、関数やクラスの内部でグローバルとしてそれを定義するために必要がある場合があります。

関連する問題