2017-06-26 8 views
1

floatに入力をキャストし、浮動小数点数が正数か負数かに基づいて>または<の変数演算演算子を作成するコードスニペットがあります。私は、ブールを望むように私のハードコード、私はこれを取得した値は、(それが動作する場合PHPの動的数値演算子の問題

var_dump((floatval($value_one) - floatval($value_two)).$operator.$variance_amount); 
// returns "-51.35 < -50" 

// allow custom variance from user input 
if (isset($request->custom_variance)) { 
    $variance_amount = floatval($request->custom_variance); 
    ($variance_amount < 0) ? $operator = " < " : $operator = " > "; 
} else { 
    // set default 
    $variance_amount = floatval(-50); 
    $operator = " < "; 
} 

は、私はその後、出力を表示するために、私はここにダンプされているif文でこれらの変数を使用します)

var_dump((floatval($value_one) - floatval($value_two)) < -50); 
// returns true 

私はこのことについて、ここでいくつかの読み取りを行っていると私のオペレータが文字列として解釈されているが、私はeval() Fを使用して避けたいと、それは動作しないようにそれはそう可能であれば統一。

提案がありますか?

答えて

0

あなたはリターンキーワードとと、このような適切な文字列式でのeval()で試すことができます。を入力し、希望する場合の場合はとしてください。

$result="return ((floatval($value_one)- floatval($value_two)).$operator.$variance_amount);"; 
    // returns true instead of "-51.35 < -50" 
    if(eval($result)){ 
    // do what ever you want to do 
    }