2012-04-04 4 views
0

Ifステートメントで変数を取りますif ($var)$varが設定されているかどうかを確認するため、現時点では機能しません。しかし、私が求めているのは、これを可能にする方法があるのか​​?答えに感謝します。PHPこれを実行することが可能である場合、私は思っていた文字通り

編集: 基本的に私はこれをやっている理由を説明する必要があります。 「チャネル」の1つに保存されているデータに基づいて、通知を受け取ったときにユーザーが制御できるようにしたい。たとえば、ユーザーが唯一の彼らの収集したデータは、だから私は彼らが二つのフィールドを選択することになるだろう60よりも大きいときに通知を取得したい

:その数(intやfloat型)の

まずフィールドの入力を

第2のフィールド選択を書くことは(>、<に等しく、= <、= >)

この中に最後の文は、彼らの "チャンネル" が収集し、そのデータになります。

私は、その選択肢をデータベースに保存して、何とかして後でその選択肢に応じることができるようにしたいと考えています。

+0

PHPの 'eval'関数はこれを行います:http://php.net/manual/en/function.eval.php – anubhava

+0

@anubhava:' eval'には注意してください。 –

+2

これはしばしば非常に悪い習慣と考えられ、通常は 'eval()'から必要なことをするための別の方法があります。 –

答えて

-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 ":-)"; 

DEMO:http://codepad.org/vaELABEm

あなたもswitchに多くのcase Sを追加することで、他のことを行うためにこれを使用することができます。

+0

なぜdownvote?私はこれが 'eval'よりはるかに良いアイデアだと思う。 –

4

The eval()任意のPHPコードを実行できるため、言語構成は非常に危険です。したがってその使用はお勧めしません。このコンストラクトを使用する以外の選択肢がないことを慎重に確認した場合は、あらかじめ適切に検証することなく、ユーザーが提供したデータを渡すことに注意してください。

+0

ありがとうございます - 私はこれらの文字列を私のWebアプリケーションのどこかに生成するので、ユーザーはこれらの文字列を編集することはできません。 – Alfo

+1

@ Alfo:この文字列を自分で生成している場合は、そのコードを変更することをおすすめします。単一の文字列を生成する代わりに、配列を返します。 'array(' $ something '、' == '、' $ somethingelse ') 'のような値と演算子を使用します。次に、操作が何であるかを確認し、正しいifを実行します。 –

+0

それは面白いです。動的な 'if'文を生成するために、その情報をどのように使用するのですか? – Alfo

0

if ($something == $somethingelse) { // Say hello }を使用しないのはなぜですか?それほど多くのコードではありません。

+0

'$ var'はデータベースから読み込まれるためです。 – Alfo

+2

@Alfo:データベースにPHPコードを保存するのは一般的には面倒です。 –

+0

'$ a => $ b'でも@Rocketですか? – Alfo

0

この質問にお答えいただくと、デザインに何か問題があります。

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

あなたのコードをしっかりとしたものにするために、アプリケーションを再設計する必要があります。

関連する問題