0

eval コマンドを使用して、さまざまなコードの組み合わせを試しました。しかし、私の答えは常に空白です。これは私が試した簡単なものです。

$equation = "18 - (18 * 2) - 1";
$var = eval($equation);
echo "answer: " . $var;

これには評価コードが必要ないことは理解していますが、私が取り組んでいる実際のコードには必要です。常に空白で表示されます。

4

2 に答える 2

3

eval()変数を有効で完全な PHP 式にするために、変数を に渡すときに変数を設定する必要があります。

$equation = "18 - (18 * 2) - 1";
eval(  '$var = ' . $equation . ';');
echo "answer: " . $var;

または、次の値を返すことができます。

$var = eval(  'return ' . $equation . ';');

このデモecho $var;で見られるように、これで実行できます。

そうは言っeval()ても、根本的な問題は通常、他の手段で解決されるため、使用は通常お勧めできません。

于 2012-08-09T00:38:08.720 に答える
3

解決

return評価されたステートメント内に追加します。そうしないと、eval()何を返すかわかりません。

$equation = '2 + 2 * 2';
$var = eval("return $equation;");

上記が機能することの証明: http://ideone.com/bTtIH

return対設定変数の優位性について

のドキュメントeval()からの詳細:

eval()NULLが評価されたコードで呼び出されない限り戻ります。returnその場合、に渡された値returnが返されます。

つまり、名前空間を汚染する必要はありません。戻り値から直接必要なものを取得できeval()ます。

于 2012-08-09T00:41:01.707 に答える