0

配列があり、配列の各要素をパラメーターとして関数に渡す必要があります。

言う:

$var = array("var2","var3","var4");
//Pass each element as a new parameter to a function
call_to_function ($var2, $var3, $var4);

//However, if the number of array element change it can be
$var = array("var2","var3");
call_to_function ($var2,$var3);

ここでの問題は、動的な数のパラメーターを作成して関数を呼び出す方法です。

使用: PHP 関数mysqli_stmt::bind_param、複数のパラメーターを取ります。そして、配列からパラメータを導出する必要があります。

それを行う方法はありますか?

4

3 に答える 3

1

eval() を使用して、動的な数のパラメーターで関数を呼び出すことができます。

// Construct the parameter string like "$var[0], $var[1], $var[2]"
$param_str = '';
foreach($var as $key => $val) {
    $param_str .= '$var['.$key.'],';
}
$param_str = rtrim($param_str, ',');

eval('call_to_function('.$param_str.');');

eval() の使用は良い習慣とは見なされませんが、配列キー $var が常に整数であると確信している場合 (例のデフォルト キーのように)、これは良い方法です。

于 2015-05-15T08:16:49.437 に答える
1

これはあなたのために働くはずです:

最初に、対応する変数への参照を含む配列を作成する必要があります。以下のように、foreach ループを使用して簡単にこれを行うことができます。

foreach($var as $v) {
        $bindValues[] = &$$v; 
}

この後call_user_func_array()、関数を呼び出して変数をバインドできます。ここでは、手続き型または OOP スタイルを使用するかどうかによって異なります。

手続き型:

call_user_func_array("mysqli_stmt_bind_param", array_merge([$stmt, $types], $bindValues));

おっと:

call_user_func_array([$stmt, "bind_param"], array_merge([$types], $bindValues));
于 2015-05-15T07:59:51.790 に答える
-1

call_user_func_array()そのためだけです:

call_user_func_array(array($stmt, 'bind_param'), $var);
于 2015-05-15T10:34:17.983 に答える