-2

関数名を変数に割り当てて動的に呼び出すプログラムをPHPで作成しています。私は以下のコードを持っています、私が追加のためにコードを実行するとき、それはすべての答えを示しています。

function multiply($val1, $val2)
{
  $mul = $val1 * $val2;
  echo $mul;
}

function divide($val1, $val2)
{
  $div = $val1 / $val2;
  echo $div;
 }

$func = plus($_POST['val1'], $_POST['val2']);
$func = minus($_POST['val1'],$_POST['val2']);
$func = multiply($_POST['val1'],$_POST['val2']);
$func = divide($_POST['val1'],$_POST['val2']);

助けてください。

4

4 に答える 4

0

関数をクロージャーとして実装し、そのクロージャーを渡すこともできます。関数を渡すことが必要な場合。

$divide = function($val1, $val2) {
    $div = $val1 / $val2;
    echo $div;
};

$divide($_POST['val1'], $_POST['val2']);
other_function($divide, $param, $otherParam); // you could use the closure $divide inside this function.

ただし、スクリプトに使用しているユーザー入力をエスケープすることを忘れないでください。

于 2012-11-12T06:55:30.990 に答える
0

提案されたコードでは、動的に呼び出される4つの変数を作成せず、代わりに4つの関数にプラス、マイナス、乗算、除算を呼び出します。これらの関数は、実装したとおりに出力を生成しました。$func単に常にそれらの関数の戻り値に置き換えられます。

代わりに、動的関数呼び出しを実際に使用する必要がある場合は、次のようなことを試してください。

call_user_func($_POST['operation'],$_POST['val1'],$_POST['val2']);

本番環境では、post変数の値を実際に検証する必要があることに注意してください。

于 2012-11-12T06:41:03.470 に答える
0

ここで変数関数の使用方法を確認し、試した完全なコードを確認してください。

たぶんあなたはこのようなことをしようとしています:

function add($one, $two)
{
   return $one + $two;
}

$funcname = "foo";
echo $funcname(1, 4);
于 2012-11-12T06:41:11.850 に答える
0

ここでは、ニーズに合わせて試してみることができるものを示します。

function user_selection($operation,$op1,$op2){
   switch ($operation){
    case '+':
        return $op1 + $op2;
        break;
    case '-':
        return $op1 - $op2;
        break;
    case '*':
        return $op1 * $op2;
        break;          
    case '/':
        return $op1 / $op2;
        break;  
    }

}

上記の関数を呼び出すには、

  $functionName = 'user_selection';
  echo $functionName('+',1,2);

引数、操作などを変更することで、さまざまなことを行うことができます。このことがどのように機能するかをよりよく理解するには、変数関数の php マニュアルを参照してください。

于 2012-11-12T07:07:17.197 に答える