1

eval 関数の構文を理解するのに助けが必要です-または eval が正しいアプローチである場合でも。mysql データベースに、実行する必要がある PHP 関数の名前を保持する列があります。関数に渡されるまで変数として残しておきたい PHP 変数もあります。以下は私がこれまでに持っているものです:

eval($valRec[$key]($key,$value));

$valRec は、mysql SELECT の結果を含む配列です。$key は、関数名を含む列の名前を参照する変数です。

$key と $value は、関数に渡す必要がある PHP 変数です。

最後に、私は次のようになりたいです:

functionName($key,$value);

どの PHP を実行するか。

うまくいけば、私はそれを明確に説明しました - 助けてくれてありがとう!

4

5 に答える 5

4

Eval はおそらくあなたが望むものではありません。と を見てcall_user_funcくださいcall_user_func_array。名前が変数にある関数を呼び出すことができます。

call_user_func($valRec[$key], $key, $value);
于 2012-09-07T02:37:40.050 に答える
3

あなたがする必要があるのは次のとおりです。

$valRec[$key]($key,$value);

参照:可変関数.

于 2012-09-07T02:27:32.013 に答える
2

PHPでは、以下を行うことができます。

$func = 'strtolower';
$foo = $func($bar);

だからあなたの場合、$valRec[$key]($key,$value);うまくいくでしょう。

デモを確認してください。

追加:機能 しない理由evalがあるため。ステートメントを終了することをeval忘れないでください。そうしない;だからあなたはする必要があります:

eval($valRec[$key].'($key, $value);');
于 2012-09-07T02:46:45.917 に答える
1

PHPは最近使っていませんが、PHPの概念はeval文字列を評価することです。

そのため、実行するコード行を表す文字列を作成する必要があります。

あなたの場合、それは次のことを意味します:

eval($valRec[$key] . '($key, $value);');

あなたはそれを自分で言った、あなたはで終わりたいfunctionName($key,$value);ので、それである文字列を作成する必要があり、それをに渡しevalます。

于 2012-09-07T02:24:19.147 に答える
0

この例を参照してください。

<?php
    $string = 'cup';
    $name = 'coffee';
    $str = 'This is a $string with my $name in it.';
    echo $str. "\n";
    eval("\$str = \"$str\";");
    echo $str. "\n";
?>

これが出力です

This is a $string with my $name in it.
This is a cup with my coffee in it.

あなたはこれを読む必要があります.PHPでevalが悪になるのはいつですか?

于 2012-09-07T02:23:45.717 に答える