2017-06-26 125 views
1

我有下面的代碼片段,它會將輸入投射到浮點數,並根據浮點數是正數還是負數來創建變量數學運算符><PHP動態數學運算符問題

// 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)).$operator.$variance_amount); 
// returns "-51.35 < -50" 

如果我硬代碼,我得到這個值(它的工作原理,因爲我想要一個布爾)

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

我已經做了一些閱讀就在這裏這件事,好像我的操作被解釋爲一個字符串,但我想避免使用eval() F IT不工作如果可能的話聯合。

有什麼建議嗎?

回答

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 
    }