0

私はこれを行うことが可能かどうか疑問に思っていました:

$var = '$something == $somethingelse';

if ($var) { // Say hello }

そしてそれはこれと同じことを意味します:

if ($something == $somethingelse) { // Say hello }

if ($var)が設定されているかどうかを確認するため、現時点ではこれが機能しないことはわかって$varいます。しかし、私が求めているのは、これを許可する方法はありますか?答えをいただければ幸いです。

編集:基本的に私は私がこれをしている理由を説明する必要があると感じています。「チャネル」の1つが保存したデータに基づいて、ユーザーが通知を受け取るタイミングを制御できるようにしたいと思います。

たとえば、ユーザーは、収集したデータが60より大きい場合にのみ通知を受け取りたいと考えています。したがって、次の2つのフィールドを選択してもらいます。

それらの番号の最初のフィールド入力(intまたはfloat)

2番目のフィールドの選択(等しい、<、>、= <、=>)

このifステートメントの最後のことは、「チャネル」によって収集されたデータです。

次に、彼らの選択をデータベースに保存し、後で彼らの選択に基づいて行動できるようにしたいと思います。

4

4 に答える 4

4

eval()言語構造は、任意のPHPコードを実行できるため、非常に危険です。したがって、その使用はお勧めしません。この構成を使用する以外に選択肢がないことを注意深く確認した場合は、事前に適切に検証せずに、ユーザーが提供したデータを渡さないように特に注意してください。

于 2012-04-04T16:05:48.773 に答える
0

この質問に出くわした場合は、デザインに問題があります。

コードとデータ(実際に何をしているのか)を混合することは、プログラマーができる最悪のことの1つです。それはあなたのコードを維持不可能で安全でないものにします。

コードを可変ではなく堅固にするために、アプリケーションを再設計する必要があります。

于 2012-04-04T17:01:24.987 に答える
0

使ってみませんif ($something == $somethingelse) { // Say hello }か?それはそれほど多くのコードではありません。

于 2012-04-04T16:08:21.350 に答える
-1

この文字列は他の場所で生成されているとあなたは言います。文字列を生成する代わりに、配列を生成することをお勧めします。

このように:array('something','==','somethingelse')

これを処理する場合は、変数をそれらの値に置き換えてから、演算子を確認して正しい操作を実行できます。

このようなもの:

$x = array('something','==','somethingelse');
list($valA, $operation, $valB) = $x;

// Replace values
$valA = $$valA;
$valB = $$valB;

// Run operation
$result = false;
switch($operation){
    case '==':
        $result = $valA == $valB;
        break;
    default:
        break;
}
if($result) echo ":-)";

デモ:http ://codepad.org/vaELABEm

にさらにcasesを追加することで、これを使用して他のことを行うこともできますswitch

于 2012-04-04T16:26:04.533 に答える