eval コマンドを使用して、さまざまなコードの組み合わせを試しました。しかし、私の答えは常に空白です。これは私が試した簡単なものです。
$equation = "18 - (18 * 2) - 1";
$var = eval($equation);
echo "answer: " . $var;
これには評価コードが必要ないことは理解していますが、私が取り組んでいる実際のコードには必要です。常に空白で表示されます。
eval()
変数を有効で完全な PHP 式にするために、変数を に渡すときに変数を設定する必要があります。
$equation = "18 - (18 * 2) - 1";
eval( '$var = ' . $equation . ';');
echo "answer: " . $var;
または、次の値を返すことができます。
$var = eval( 'return ' . $equation . ';');
このデモecho $var;
で見られるように、これで実行できます。
そうは言っeval()
ても、根本的な問題は通常、他の手段で解決されるため、使用は通常お勧めできません。
return
評価されたステートメント内に追加します。そうしないと、eval()
何を返すかわかりません。
$equation = '2 + 2 * 2';
$var = eval("return $equation;");
上記が機能することの証明: http://ideone.com/bTtIH
return
対設定変数の優位性についてのドキュメントeval()
からの詳細:
eval()
NULL
が評価されたコードで呼び出されない限り戻ります。return
その場合、に渡された値return
が返されます。
つまり、名前空間を汚染する必要はありません。戻り値から直接必要なものを取得できeval()
ます。